如果SelectedItem被对象“取消”,如何处理

时间:2013-07-01 20:00:56

标签: wpf data-binding combobox

我有一个组合框,其中SelectedItem绑定到业务对象中的属性。通常它工作得很好。但是,对象的属性设置器中存在逻辑,而不是偶尔“取消”它认为无效的新值。这是以静默方式完成的,即没有异常抛出属性值不会改变。在这种情况下,我希望组合框的SelectedItem恢复到之前的选择,因为从技术上讲,新选择永远不会传播到底层属性。目前,组合框只停留在新选择上,这是误导性的,因为这不是基础财产的真实价值。

如何确保组合框始终显示属性的真实值?

2 个答案:

答案 0 :(得分:0)

需要调用NotifyPropertyChanged

private enum1 e1 = enum1.val1;

public enum1 E1
{
    get { return e1 } 
    set 
    {
        if (e1 == value) return;
        if (OK(value)) e1 = value;
        NotifyPropertyChanged(E1);
    }
}

答案 1 :(得分:0)

经过一番挖掘,我发现了这个:

http://codebetter.com/jameskovacs/2011/04/28/the-case-of-the-confused-combobox-a-wpfmvvm-bedtime-story/

在我的机器上给出了对组合框进行子类化并强制它在选择时更新目标的解决方案,但是该网站上的评论员认为即使这不是防弹的。有几个网站提到wpf组合框在这方面很古怪。显然MS做出了一个可疑的决定,让组合框在设置binded属性时忽略任何进一步的通知,这在你遇到这样的情况之前是有意义的。这至少是其他WPF专家的意见,我绝对不会这样做:)