2012-11-14 2 views
7

선언 된 ComboBox.Items 목록이있는 ComboBox가 있습니다 (즉, ItemsSource를 통해 동적으로 바인딩되지 않음). 아래 표시된대로 표시 이름에 ComboBoxItem.Content를 사용하고 해당 ID에 ComboBoxItem.Tag를 사용합니다.WPF MVVM ComboBox 태그 선택

선택한 항목의 태그를 반환하고 콘텐츠를받지 못하게하려면 어떻게해야합니까? SelectedItemValuePath="Tag"을 시도했지만 작동하지 않습니다.

<ComboBox Visibility="{Binding Path=ShowOutpatientFields, Converter= 
     {StaticResource 
      boolTovisConverter}}" Grid.Row="5" Grid.Column="2" Margin="0,2,0,2" 
     Text="{Binding Path=NewCase.ServiceType, ValidatesOnDataErrors=true, 
     NotifyOnValidationError=true}" SelectedValuePath="Tag"> 
      <ComboBox.Items> 
      <ComboBoxItem Content="Hospice" Tag="33" /> 
      <ComboBoxItem Content="Hospital Outpatient" Tag="36" /> 
      <ComboBoxItem Content="Hospital Inpatient Extension" Tag="128" /> 
      <ComboBoxItem Content="Maternity" Tag="52" /> 
      </ComboBox.Items> 
    </ComboBox> 

답변

8

당신은 당신의 ViewModel 클래스에서이 속성이있는 경우 :

private string _serviceType; 
public string ServiceType 
{ 
    get { return _serviceType; } 
    set { _serviceType = value; } 
} 

물론 당신이 int 형의 속성을 가질 수 있고 너무 일하게 될 것입니다.

<ComboBox VerticalAlignment="Center" Margin="0,2,0,2" 
       SelectedValue="{Binding ServiceType}" 
       SelectedValuePath="Tag"> 
      <ComboBox.Items> 
       <ComboBoxItem Content="Hospice" Tag="33" /> 
       <ComboBoxItem Content="Hospital Outpatient" Tag="36" /> 
       <ComboBoxItem Content="Hospital Inpatient Extension" Tag="128" /> 
       <ComboBoxItem Content="Maternity" Tag="52" /> 
      </ComboBox.Items> 
     </ComboBox> 
+1

완벽한! 고마워요 – NickV

+0

당신은 오신 것을 환영합니다 :) – kmatyaszek

0

하는 콤보 상자에 이름 "X : 이름 ="보내기

이 바인딩을 시도 abcComboBox "를 다음 코드 측에서 문자열 태그 = (ComboBoxItem 등 abcComboBox.SelectedItem) .Tag.ToString() ;