2014-10-03 3 views
0

Я работаю над проектом WPF. У меня есть ComboBox, и я хочу обновить его значение Selected на определенном событии. Мой код приведен ниже;Combobox selectedvalue не обновляется

Вот мой XAML код

<ComboBox x:Name="cmbSeverity" Height="23" 
    Margin="10,157,0,0" VerticalAlignment="Top" Width="198" 
    HorizontalAlignment="Left" SelectedValuePath="Content"> 
     <ComboBoxItem Content="Low"/> 
     <ComboBoxItem Content="Medium"/> 
     <ComboBoxItem Content="High"/> 
</ComboBox> 

Вот мой CS код

SomeEvent(){ 
cmbSeverity.SelectedValue = "High"; 
} 

Просьба направлять мне

ответ

1

Вы можете использовать Databinding на SelectedItem собственности, и привязать его к свойству , Такие, как:

В вашем XAML:

SelectedItem="{Binding MyProperty}" 

В коде: (желательно ваш ViewModel)

public class MyViewModel : INofityPropertyChanged 
{ 
    private string _myProperty; 
    public string MyProperty 
    { 
     get { return _myProperty; } 
     set 
     { 
      _myProperty = value; 
      NotifyPropertyChanged("MyProperty"); 
     } 
    } 
    private void OnPropertyChanged(string name) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(name)); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 
1

Вы объявили ItemsSource в коллекцию ComboBoxItems и пытается установить выбранное значение строки который не будет работать, потому что ItemsSource тип сбора и выбранный тип значения должны быть одинаковыми.

Таким образом, изменить свою декларацию к этому, и он будет работать (использование строки объектов вместо comboBoxItems):

<ComboBox x:Name="cmbSeverity" Height="23" 
      xmlns:sys="clr-namespace:System;assembly=mscorlib" 
      Margin="10,157,0,0" VerticalAlignment="Top" Width="198" 
      HorizontalAlignment="Left"> 
    <sys:String>Low</sys:String> 
    <sys:String>Medium</sys:String> 
    <sys:String>High</sys:String> 
</ComboBox> 
Смежные вопросы