【问题标题】:ComboBox (two-way) binding to object propertyComboBox(双向)绑定到对象属性
【发布时间】:2013-06-12 18:16:19
【问题描述】:

在数据库中,表 TblPerson 有一个名为 GenderCHAR(1) 字段,其中对可能的值 null、'M' 和 'F' 有一个检查约束

我正在尝试在ComboBox 中显示(和双向绑定)(EF 映射到类型stringTblPerson.Gender 属性,但我似乎无法让它工作。

我将我的其他控件 (TextBoxes) 绑定到同一个 TblPerson 对象没有问题。根据检查约束设置了ItemsSource

comboBoxGender.ItemsSource = new char[] { '\0', 'M', 'F' };

但后来我没能掌握ItemsSource 和对象属性绑定之间的联系。
我什至没有尝试显示“男性”或“女性”并将其链接到“M”和“F”,所以我认为我不需要转换器(或者我需要吗?)

那么我应该如何处理那些(不)著名的三个 ComboBox 属性,我需要设置这些属性才能使其工作?
已经有一段时间了,还没有点击。是的,我读过微软的How to: Use SelectedValue, SelectedValuePath, and SelectedItem

【问题讨论】:

  • TblPerson.Gender 是一个字符串吗?如果是您的 ItemsSource 是不同的类型,这就是它不起作用的原因。
  • @RichardE 它就在我面前,但你指给我看。做得好!如果你愿意,你可以把它变成一个答案,我很乐意接受。
  • 没问题。我添加了一个答案,以便可以将其标记为已回答。

标签: c# wpf xaml binding combobox


【解决方案1】:

TblPerson.Gender 和您的 ItemsSource 项目需要属于同一类型。

【讨论】:

    【解决方案2】:

    首先,忘记“Tbl”命名。实体不是表格。实体就是实体。

    其次,不要在程序代码中操纵 UI 元素的属性。

    这样,只需使用 SelectedItem 就可以了。

    <ComboBox ItemsSource={Binding SomeList} SelectedItem={Binding Person.Gender}/>
    

    【讨论】:

    • Tbl 命名就是生成的类的名称,因为表是这样调用的。它不起作用。 ItemsSource 当然可以,但SelectedItem 不会。
    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多