我有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
会发生更改。我在这里缺少什么?
谢谢!
答案 0 :(得分:1)
没有调用SetValue的原因是依赖属性绑定 NOT 通过CLR setter。绑定的DP由WPF“幕后”更新,即直接在DP系统管理的私有“插槽”中更新。
因此,当复选框发生变化时,您的DP 可能已设置。没有被击中的setter断点不应该关注你。如果您有其他理由相信DP没有更新,您应该担心。
要中断绑定DP中的更改,请在属性元数据中添加PropertyChangedCallback,并在该回调中设置断点。