我有一个组合框,其中SelectedItem绑定到业务对象中的一个属性。通常它工作得很好。但是,对象的属性设置器中有逻辑比偶尔“取消”它认为无效的新值。这是以无声的方式完成的,即不会抛出异常,只是属性值不会改变。在这种情况下,我希望组合框的SelectedItem恢复到之前的选择,因为从技术上讲,新的选择永远不会传播到基础属性。目前,组合框只是停留在新的选择上,这是误导性的,因为这不是基础属性的真实价值。如何处理SelectedItem被对象“取消”
如何确保组合框总是显示属性的真实值?
我有一个组合框,其中SelectedItem绑定到业务对象中的一个属性。通常它工作得很好。但是,对象的属性设置器中有逻辑比偶尔“取消”它认为无效的新值。这是以无声的方式完成的,即不会抛出异常,只是属性值不会改变。在这种情况下,我希望组合框的SelectedItem恢复到之前的选择,因为从技术上讲,新的选择永远不会传播到基础属性。目前,组合框只是停留在新的选择上,这是误导性的,因为这不是基础属性的真实价值。如何处理SelectedItem被对象“取消”
如何确保组合框总是显示属性的真实值?
一些挖后,我遇到了这个:
子类组合框,并迫使它来更新目标被选择后,改变了作品的给出的解决方案在我的机器上,但该网站上的评论员认为,即使这不是防弹的。有几个网站提到wpf组合框在这方面很古怪。显然MS做出了可疑的决定,让组合框忽略任何进一步的通知,同时设置绑定属性,这是有道理的,直到你遇到这样的情况。这至少是其他WPF专家的意见,我绝对不是:)
需要调用NotifyPropertyChanged
private enum1 e1 = enum1.val1;
public enum1 E1
{
get { return e1 }
set
{
if (e1 == value) return;
if (OK(value)) e1 = value;
NotifyPropertyChanged(E1);
}
}
我想到了这一点,但它没有在我的机器上工作。在一些网络搜索后,我已经了解到wpf组合框有一些问题,请参阅我的回答帖子以获取链接。显然它的行为在wpf 3.5和4.0之间可能会有所不同! – Tekito
你如何绑定ComboBox的SelectedItem属性? –
SelectedItem =“{Binding Path = ProjectionType}”....其中ProjectionType是绑定对象的属性的名称。这是一个枚举属性。 – Tekito
业务对象需要取消,然后调用NotifyPropertyChanged,以便旧值传播回UI。 – Paparazzi