【问题标题】:Binding to a combobox with specified content绑定到具有指定内容的组合框
【发布时间】:2015-06-05 13:30:05
【问题描述】:

我想知道如何在指定内容时绑定到 ComboBox 项目。我可以将内容保存到数据库,但是当我尝试重新输入记录时,ComboBox 根本不会更改为 SelectedItem

<ComboBox SelectedItem="{Binding Duration, UpdateSourceTrigger=PropertyChanged}" SelectedIndex="0" Style="{StaticResource CombBox}" MinWidth="60">
    <ComboBoxItem Content="15 Minutes"/>
    <ComboBoxItem Content="30 Minutes"/>
    <ComboBoxItem Content="45 Minutes"/>
    <ComboBoxItem Content="1 Hour"/>
</ComboBox>

public string Duration { get { return Entity.Duration; } set { Entity.Duration = value; NotifyOfPropertyChange(); } }

我的绑定设置不正确吗?

【问题讨论】:

  • 将 ComboBoxItem 替换为 Duration 类型的对象
  • 嗨@HosseinNarimaniRad 我不确定这到底是什么意思。请给我一个例子。
  • 他的意思是不要使用ComboBoxItem,而是使用String
  • 你同时使用了 selectedItem 和 selectedIndex,我不确定这是否有意义。

标签: c# wpf


【解决方案1】:

首先:在你的 xaml 中使用这个命名空间xmlns:sys="clr-namespace:System;assembly=mscorlib"

第二:将你的 ComboBox 改成这样:

<ComboBox SelectedItem="{Binding Duration, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <sys:String>15 Minutes</sys:String>
    <sys:String>30 Minutes</sys:String>
    <sys:String>45 Minutes</sys:String>
</ComboBox>

第三:你是如何实现INotifyPropertyChanged的?似乎您没有将属性名称作为字符串发送到通知机制。应该是这样的(插入NotifyOfPropertyChange()

PropertyChanged(this, new PropertyChangedEventArgs("Duration"));

【讨论】:

  • 甜蜜这工作!!!!谢谢你。我已经使用了属性更改的 caliburn 实现。后面干净多了。您不必像 INotify 那样指定变量,您必须使用 OnPropertyChange("Duration")
【解决方案2】:

尝试指定绑定模式,Mode = TwoWay

欲了解更多信息,请访问 https://msdn.microsoft.com/en-us/library/system.windows.data.binding.mode(v=vs.110).aspx

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多