2012-11-14 14 views
7

Mam ComboBox, który ma deklarowaną listę ComboBox.Items (innymi słowy, nie jest dynamicznie związany przez ItemsSource). Używam ComboBoxItem.Content dla nazwy wyświetlanej i ComboBoxItem.Tag dla odpowiedniego Id, jak pokazano poniżej.WPF MVVM Wybór tagu ComboBox

Jak uzyskać tag wybranego zwrotu, a nie zawartość? Próbowałem SelectedItemValuePath="Tag", ale to nie działa.

<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> 

Odpowiedz

8

Jeśli masz nieruchomość w klasie ViewModel:

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

Oczywiście można mieć właściwość typu int i będzie pracować zbyt.

Spróbuj tego wiązania:

<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

Doskonale! Dziękujemy! – NickV

+0

Nie ma za co :) – kmatyaszek

0

Daj ComboBox nazwę "x: Name = "abcComboBox", a następnie na stronie kodu ciąg tag = (abcComboBox.SelectedItem jak ComboBoxItem) .Tag.ToString() ;