WPF MVVM ComboBox 标签选择

8

我有一个ComboBox,它有一个已经声明的ComboBox.Items列表(换句话说,不是通过ItemsSource动态绑定的)。我使用ComboBoxItem.Content作为显示名称,ComboBoxItem.Tag作为相应的Id,如下所示。

如何返回所选项的Tag而不是内容?我尝试了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>
2个回答

10
如果您的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>

0
给下拉框命名为" x:Name = "abcComboBox",然后在代码中使用以下语句: string tag = (abcComboBox.SelectedItem as ComboBoxItem).Tag.ToString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接