WPF组合框绑定和SelectedItem

时间:2015-10-06 14:53:52

标签: c# wpf xaml combobox

我有一个包含以下类实例的列表:

namespace Foo.InformationModel.Reference
{
    public class ReferenceCodeTypeChar
    {
        public ReferenceCodeTypeChar();

        public string Category { get; set; }
        public string CodeValue { get; set; }
        public string Description { get; set; }
        public string Value { get; set; }
    }
}

以下是用作组合框所在窗口的DataContext及其相关属性的对象:

public class MyObject
{
    public List<Foo.InformationModel.Reference.ReferenceCodeTypeChar> ProgramTypes() {...}

    private string _selectedProgramTypeCode;
    public string SelectedProgramTypeCode
    {
        get
        {
            return _selectedProgramTypeCode;
        }
        set
        {
            if (_selectedProgramTypeCode != value)
            {
                _selectedProgramTypeCode = value;
                OnPropertyChanged("SelectedProgramTypeCode");
            }
        }
    }
}

这是组合框背后的xaml代码:

<ComboBox ItemsSource="{Binding Path=ProgramTypes}"
          SelectedItem="{Binding Path=SelectedProgramTypeCode, Mode=TwoWay}"
          DisplayMemberPath="Description"
          SelectedValuePath="Value"/>

问题发生在SelectedProgramTypeCode中。 &#34;值&#34;的值变量是Foo.InformationModel.Reference.ReferenceCodeTypeChar而不是ReferenceCodeTypeChar对象的Value属性的预期字符串。有什么问题?

2 个答案:

答案 0 :(得分:2)

您必须将SelectedItem SelectedValuePathSelectedValue结合使用。

请参阅此回答Difference between SelectedItem, SelectedValue and SelectedValuePath

答案 1 :(得分:-1)

您应该在XAML中使用SelectedValue而不是SelectedItem

<ComboBox 
  ItemsSource="{Binding Path=ProgramTypes}"
  SelectedValue="{Binding Path=SelectedProgramTypeCode, Mode=TwoWay}"
  DisplayMemberPath="Description"
  SelectedValuePath="Value" />