我在我的usercontrol中定义了这样的属性:
public bool IsSelected
{
get { return (bool)GetValue(IsSelectedProperty); }
set
{
SetValue(IsSelectedProperty, value);
StackPanelDetails.Visibility = value ? Visibility.Visible : Visibility.Collapsed;
}
}
public static readonly DependencyProperty IsSelectedProperty =
DependencyProperty.Register("IsSelected", typeof (bool), typeof (ucMyControl));
但是当我在xaml中设置它的属性时,它想要触发它(set不被调用)。
<DataTemplate><local:ucTopicItem IsSelected="False" /></DataTemplate>
可能是什么问题?
答案 0 :(得分:10)
在XAML中设置DP时,WPF不会调用DependencyProperty的setter。 WPF将直接设置DependencyProperty。
请参阅MSDN XAML Loading and Dependency Properties,了解未调用setter的原因。
答案 1 :(得分:5)
您应该直接在依赖项属性中使用属性更改处理程序。这样,您可以确保在XAML中设置时调用它:
public static readonly DependencyProperty IsSelectedProperty =
DependencyProperty.Register("IsSelected", typeof(bool), typeof(ucMyControl), new PropertyMetadata(false, OnIsSelectedChanged));
private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// Implement change logic
}