WPF C#中ComboBox的SelectedValue或SelectedItem绑定

5
我有一个下拉框,它连接到一个对象中的字符串ObservableCollection。这个绑定是有效的,但我想要将用户从这个下拉框选择的任何内容,绑定到同一对象中不同的属性,该属性为字符串。我无法弄清楚是否应该使用SelectedValue还是SelectedItem,或者是否存在其他问题。谢谢您提前的帮助。
以下是我迄今为止所拥有的,我省略了与问题无关的任何代码: XAML:
<Grid.Resources>
    <my:JobItem x:Key="jobItemViewSource" />
</Grid.Resources>

<ComboBox x:Name="businessUnitBox" ItemsSource="{Binding Path=BusinessUnits}" IsSynchronizedWithCurrentItem="True">
    <ComboBox.SelectedValue>
        <Binding Path="BusinessUnit" Mode="TwoWay" UpdateSourceTrigger="Explicit" />
    </ComboBox.SelectedValue>
</ComboBox>

后台代码:

public string BusinessUnit
{
    get{  return businessUnit; }
    set
    {
        if (String.IsNullOrEmpty(BusinessUnit) || !BusinessUnit.Equals(value))
        {
            businessUnit = value;
            OnPropertyChanged("BusinessUnit");
        }
    }

}

public ObservableCollection<string> BusinessUnits
{
    get { return businessUnits; }
    set
    {
        if(!BusinessUnits.Equals(value))
        {
            businessUnits = value;
            OnPropertyChanged("BusinessUnits");
        }

        businessUnits = value;
    }
}

这可能回答了你的问题...https://dev59.com/JnE85IYBdhLWcg3wNw14 - Chris Gessler
1个回答

9
您可能想使用 SelectedItem。这将给出实际绑定到它的项目。在这种情况下,SelectedValue 是由 SelectedValuePath 属性确定的...但在这种情况下是不必要的。 此外,您可能不希望将 UpdateSourceTrigger 设置为 Explicit。在这方面,默认值应该是可以的。

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