繁体   English   中英

WPF组合框绑定和SelectedItem

[英]WPF combobox binding and SelectedItem

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

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内部。 “值”变量的值为Foo.InformationModel.Reference.ReferenceCodeTypeChar,而不是ReferenceCodeTypeChar对象的Value属性的预期字符串。 怎么了?

您必须将SelectedItem SelectedValuePathSelectedValue结合使用。

查看此答案SelectedItem,SelectedValue和SelectedValuePath之间的区别

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM