wpf - template - MVVM: ¿Enlazando a ListBox.SelectedItem?
wpf data template (1)
Bueno, ahí está, tan grande como la vida. En el XAML. Estoy vinculando a una propiedad de modelo de vista "Selectedtem". Desafortunadamente, el nombre real es "SelectedItem". Así que este código realmente funciona: resolví el problema temprano esta tarde y luego pasé el resto de la tarde y toda la noche recorriendo la red, antes de notar el error ortográfico.
Mi esposa me dijo a las 3:00 de esta tarde: "Sabes, va a ser algo pequeño". Y así fue, una letra "I" que faltaba. Bueno, al menos puedo irme a la cama ahora.
¿Cómo puedo vincular una propiedad de modelo de vista a la propiedad ListBox.SelectedItem?
Creé una demostración simple de MVVM para tratar de resolver esto. Mi modelo de vista tiene estas propiedades:
private ObservableCollection<DisneyCharacter> p_DisneyCharacters;
public ObservableCollection<DisneyCharacter> DisneyCharacters
{
get { return p_DisneyCharacters; }
set
{
p_DisneyCharacters = value;
base.FirePropertyChangedEvent("DisneyCharacters");
}
}
private DisneyCharacter p_SelectedItem;
public DisneyCharacter SelectedItem
{
get { return p_SelectedItem; }
set
{
p_SelectedItem = value;
base.FirePropertyChangedEvent("SelectedItem");
}
}
Deseo vincular la propiedad SelectedItem al elemento seleccionado en el cuadro de lista. Aquí está el XAML para el cuadro de lista:
<ListBox ItemTemplate="{StaticResource MasterTemplate}"
ItemsSource="{Binding Path=DisneyCharacters}"
SelectedItem="{Binding Path=Selectedtem, Mode=TwoWay}"
HorizontalAlignment="Stretch" />
Este es mi problema: el modelo de vista de la propiedad SelectedItem no se actualiza cuando cambio la selección en el cuadro de lista.
Hice una prueba en la que temporalmente reemplacé el modelo de vista de la propiedad SelectedIdex con una propiedad SelectedIndex, y lo vinculé a la propiedad ListBox.SelectedIndex. Esa propiedad se actualizó correctamente, solo es la propiedad SelectedItem que no puedo ponerme a trabajar.
Entonces, ¿cómo arreglo el enlace SelectedItem? Gracias por tu ayuda.