DependencyProperty未触发

Nic*_*eon 6 wpf dependency-properties

我在我的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));
Run Code Online (Sandbox Code Playgroud)

但是当我在xaml中设置它的属性时,它想要触发它(set不被调用).

 <DataTemplate><local:ucTopicItem IsSelected="False" /></DataTemplate>
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

Cle*_*ens 11

在XAML中设置DP时,WPF不会调用DependencyProperty的setter.WPF将直接设置DependencyProperty.

有关未调用setter的原因,请参阅MSDN XAML加载和依赖性属性.


jjr*_*rdk 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
}
Run Code Online (Sandbox Code Playgroud)

  • 我做到了,但是OnIsSelectedChanged仍然没有被调用。 (2认同)