Ok, he estado trabajando con WPF por un tiempo, pero necesito ayuda.WPF ComboBox SelectedItem
Tengo un ComboBox
, como a continuación:
<TabControl>
<TabItem Header="1">
<ComboBox ItemsSource="{Binding MyList}" SelectedItem="{Binding MyListSelection}"/>
</TabItem>
<TabItem Header="2"/>
</TabControl>
Cada vez que me alejo de ficha 1 y luego volver a la selección que se retira. Creo que la razón es que los controles se destruyen cuando salen del alcance y vuelven a entrar. Pero en el proceso de que el SelectedItem sea nulo, lo cual no es realmente lo que el usuario quería, es un evento debido a la interfaz de usuario. ciclo vital.
Así que me pregunto cuál es la mejor ruta para tomar? Estoy compilando esta aplicación con MVVM para poder ignorar una llamada establecida en la Propiedad MyListSelection en mi ViewModel pero tengo ComboBoxes por todas partes y no me gusta modificar mi ViewModel por lo que considero un error de WPF.
Pude subclase el WPF ComboBox, pero no hay evento SelectedItemChanging. Solo puedo agregar un controlador cuando SelectedItem haya cambiado.
¿Alguna idea?
ACTUALIZACIÓN:
bien, después de vencer a la cabeza contra la pared descubrí por qué mi problema No se pudo obtener reproducido. Si el tipo de elemento de la lista es una clase por alguna razón, WPF establece que SelectedItem sea nulo, pero si es un tipo de valor no lo hace.
aquí es mi clase de prueba (VMBase es sólo una clase abstracta que implementa INotifyPropertyChanged):
public class TestListViewModel : VMBase
{
public TestListViewModel()
{
TestList = new List<TestViewModel>();
for (int i = 0; i < 10; i++)
{
TestList.Add(new TestViewModel(i.ToString()));
}
}
public List<TestViewModel> TestList { get; set; }
TestViewModel _SelectedTest;
public TestViewModel SelectedTest
{
get { return _SelectedTest; }
set
{
_SelectedTest = value;
OnPropertyChanged("SelectedTest");
}
}
}
public class TestViewModel : VMBase
{
public string Name {get;set;}
}
Así que cuando cambio TestList de tipo int e ir y venir entre las pestañas SelectedItem se mantiene igual. Pero cuando es del tipo TestViewModel
SelectedTest se establece en nulo cuando el tabitem se desenfoca.
¿Qué está pasando?
Cuando el Tipo de lista es un tipo de referencia, no se comporta igual. Ver mi publicación actualizada – Jose