2014-10-03 4 views
0

WPF 프로젝트에서 작업 중입니다. ComboBox가 있는데 특정 이벤트에서 Selected 값을 업데이트하려고합니다. 내 코드는 아래와 같습니다. 여기 Combobox selectedvalue가 업데이트되지 않습니다.

내 CS 코드 친절

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

나에게 안내되어 내 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> 

입니다

답변

1

당신은 SelectedItem 특성에 데이터 바인딩을 사용하고, 속성에 바인딩 할 수 있습니다 . 예를 들면 :

코드에서
SelectedItem="{Binding MyProperty}" 

:

당신의 XAML에서

(바람직하게는 당신의 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

당신은 ComboBoxItems의 컬렉션으로 ItemsSource를 선언하고 문자열로 선택된 값을 설정하려고 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> 
관련 문제