Redefinir o item selecionado da caixa de combinação no conjunto usando MVVM
Eu estou usando um ComboBox no meu aplicativo WPF e seguindo MVVM. Existe uma lista de cadeias de caracteres que quero mostrar na minha caixa de combinação.
XAML:
<ComboBox ItemsSource="{Binding ItemsCollection}" SelectedItem="{Binding SelectedItem}" />
Ver modelo:
public Collection<string> ItemsCollection; // Suppose this has 10 values.
private string _selectedItem;
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
Trigger Notify of property changed.
}
}
Agora este código está funcionando absolutamente bem. Eu sou capaz de selecionar a partir da vista e posso obter alterações no ViewModel e se eu mudar SelectedItem do meu ViewModel eu posso ver na minha opinião.
Agora aqui está o que estou tentando alcançar. Quando eu mudar o item selecionado do meu ponto de vista eu preciso colocar uma verificação de que o valor é bom / ruim (ou qualquer coisa) definir item selecionado mais não defini-lo. Então, meu modelo de visão muda assim para isso.
public string SelectedItem
{
get { return _selectedItem; }
set
{
if (SomeCondition(value))
_selectedItem = value; // Update selected item.
else
_selectedItem = _selectedItem; // Do not update selected item.
Trigger Notify of property changed.
}
}
Agora, quando eu executo este código e SomeCondition (valor) retorna false, SelectedItem retorna o valor da string antiga, mas na minha opinião o item selecionado na ComboBox é o valor que eu selecionei. Então vamos supor que eu tenha coleção de 10 strings mostrando na minha ComboBox. Todos os valores são bons, exceto segundo e quarto elemento (SomeCondition retorna false para o segundo e quarto valor). O que eu quero que, se eu selecionar o 2º ou 4º elemento selectedItem, não mude. Mas meu código não está fazendo isso corretamente. Se eu selecionar o segundo elemento, a visualização ainda exibirá o segundo elemento como selecionado. Eu sei que há algo errado no meu código. Mas o que é isso?