c# wpf mvvm selecteditem selectedvalue

c# - No se puede borrar la selección de ListBox con SelectedItem=null-MVVM



wpf selectedvalue (1)

Olvide SelectedItem y SelectedIndex. La respuesta es SelectedValue , junto con IsSynchronizedWithCurrentItem = "True".

<ListBox IsSynchronizedWithCurrentItem="True" SelectedValue="{Binding SelectedSnapshotValue}" .../>

Luego, cuando llamo a ResetSelection () en el modelo de vista, SelectedSnapshotValue se establece en nulo,

void ResetSelection() { SelectedSnapshotValue = null; }

que actualiza el enlace en la plantilla de datos, usando la propiedad vinculada:

private SnapshotViewModel selectedSnapshotValue; public SnapshotViewModel SelectedSnapshotValue { get { return selectedSnapshotValue; } set { if (selectedSnapshotValue != value) { selectedSnapshotValue = value; RaisePropertyChanged("SelectedSnapshotValue"); } } }

Esta es la única forma en que pude obtener mi listbox para restablecer la selección.

Tengo la siguiente plantilla de datos (y un modelo de vista correspondiente, no se muestra):

<DataTemplate DataType="{x:Type logic:SnapshotListViewModel}"> <ListBox ItemsSource="{Binding Snapshots}" /> </DataTemplate>

ItemsSource está vinculado a una lista de instantáneas, que se encuentra dentro del modelo de vista. Mi objetivo es borrar SelectedItem, por lo que el cuadro de lista vuelve a su estado inicial no seleccionado. El modelo de vista implementa IPropertyNotified.

Agregué un enlace en el XAML así:

<ListBox SelectedItem={Binding SelectedSnapshot} .... />

En el modelo de vista, configuro SelectedSnapshot = null, pero no sucede nada, aunque se llamó a RaisePropertyChanged en la propiedad.

Intenté de nuevo con SelectedIndex en lugar de SelectedItem. Todavía sin suerte.

Finalmente encontré la solución, que detallaré a continuación.