我有一个具有依赖属性的用户控件。
public sealed partial class PenMenu : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public bool ExpandCollapse
{
get
{
return false;
}
set
{
//code
}
}
public static readonly DependencyProperty ExpandCollapseProperty = DependencyProperty.Register("ExpandCollapse", typeof(bool), typeof(PenMenu), null);
//some more code
}
我在XAML页面中赋值如下:
<Controls:PenMenu x:Name="penMenu" Opened="Menu_Opened"
ExpandCollapse="{Binding PenMenuVisible}" />
但它并没有触发用户控件中的ExpandCollapse属性的GET-SET部分。 因此,我添加了布尔转换器,只是为了检查绑定时传递的值,例如:
<Controls:PenMenu x:Name="penMenu" Opened="Menu_Opened"
ExpandCollapse="{Binding PenMenuVisible, Converter={StaticResource booleanToBooleanConverter}}" />
在转换器中设置断点,我看到传递的值是正确的。为什么它没有分配给依赖属性可能的原因是什么?
另外,在 XAML 页面中如果我这样说:
<Controls:PenMenu x:Name="penMenu" Opened="Menu_Opened"
ExpandCollapse="true"/>
然后它会进入用户控件中ExpandCollapse属性的GET-SET部分。我卡住了,感觉很奇怪,请帮忙。