2009-09-05 29 views
40

¿Cómo puedo vincular una propiedad de modelo de vista a la propiedad ListBox.SelectedItem?MVVM: ¿Enlazar con ListBox.SelectedItem?

He creado una demostración de MVVM simple para tratar de resolver esto. Mi modelo de vista tiene las siguientes 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"); 
    } 
} 

quiero obligar a la propiedad SelectedItem para el 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" /> 

Aquí está mi problema: La propiedad SelectedItem vista del modelo no se actualiza cuando cambie 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.

+4

Un buen ejemplo de cómo usar un cuadro de lista en MVVM. Gracias – MrPurpleStreak

Respuesta

45

Bueno, ahí está, 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.

+50

Para ayudarlo a encontrar estos problemas antes, si depura su aplicación, verá un error de enlace de WPF en la ventana de resultados de Visual Studio, lo que indica que la propiedad "Selectedtem" no existe. Espero que eso te ayude a rastrear este tipo de error más rápido en el futuro. – Andy

+1

Me gustaría saber sobre los errores de enlace en la ventana de salida hace un año cuando comencé el desarrollo de Silverlight. Justo cuando empiezas a pensar que eres un desarrollador decente ... – BoxerBucks

+0

@BoxerBucks, no creo que tengas ** notificaciones ** o registros de enlaces fallidos en SilverLight. – Sam