复选框没有设置依赖属性

时间:2010-01-19 22:25:40

标签: wpf binding checkbox dependency-properties

我有DependencyProperty

public bool ShowEntireHierarchyEx
{
    get { return (bool)GetValue(ShowEntireHierarchyExProperty); }
    set { SetValue(ShowEntireHierarchyExProperty, value); }
}

public static readonly DependencyProperty ShowEntireHierarchyExProperty =
    DependencyProperty.Register("ShowEntireHierarchyEx", typeof(bool), typeof(CustomizeStatisticsStyleControl), new UIPropertyMetadata(false));

我将它绑定到XAML中的CheckBox

<CheckBox Margin="16,5,0,0" x:Name="checkBoxHierarcy"
          IsChecked="{Binding ElementName=customizeStatisticsStyle, Path=ShowEntireHierarchyEx, Mode=TwoWay}">
    S_how entire gate hierarchy
</CheckBox>

但由于某些原因,CheckBox不会更改ShowEntireHierarchy属性,但如果ShowEntireHierarchy属性在代码中发生更改,则CheckBox会发生更改。我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

没有调用SetValue的原因是依赖属性绑定 NOT 通过CLR setter。绑定的DP由WPF“幕后”更新,即直接在DP系统管理的私有“插槽”中更新。

因此,当复选框发生变化时,您的DP 可能已设置。没有被击中的setter断点不应该关注你。如果您有其他理由相信DP没有更新,您应该担心。

要中断绑定DP中的更改,请在属性元数据中添加PropertyChangedCallback,并在该回调中设置断点。