C#/WPF:依赖属性未更新绑定的属性?

6

我想把我的UserControl中的一个依赖属性绑定到我的MainViewModel中。

这是依赖属性的代码:

    public static DependencyProperty ItemHasChangesProperty = DependencyProperty.Register("ItemHasChanges",
                                                                                  typeof(bool),
                                                                                  typeof(MyUserControl),
                                                                                  new PropertyMetadata(null));
    public bool ItemHasChanges
    {
        get { return (bool)GetValue(ItemHasChangesProperty); }
        set { SetValue(ItemHasChangesProperty, value); }
    }

我的XAML:

  <local:MyUserControl ItemHasChanges="{Binding Path=Changes}" Grid.Row="4"   />

现在,在调试并检查bool Changes的Set-Accessor时,我发现当我在UserControl中设置ItemHasChanges = true;时,它从未被访问。你有什么想法吗?感谢!祝好!
2个回答

11

明白了,我必须更改

<local:MyUserControl ItemHasChanges="{Binding Path=Changes}" Grid.Row="4"   />
to
<local:MyUserControl ItemHasChanges="{Binding Path=Changes, Mode=OneWayToSource}" Grid.Row="4"   />

花了我大约3个小时才理解明白.. 哈哈 :-)

干杯


为了其他读者的参考,在通用 Windows 应用程序中,没有 OneWayToSource 模式。 我们可以使用 OneWay 代替。 - Justin Skiles
1
如果需要双向更新,TwoWay 也可以使用。这也浪费了我大约一个小时的时间,认为我的属性没有设置其值。 - Dan

1
你是直接在控件上设置 ItemHasChanges 吗(而不是通过更新绑定源)?如果是这样,那么它将会移除绑定。

不,我正在将源绑定到控件上,并根据操作更改源的值。 - Joseph jun. Melettukunnel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接