aierda 2023-11-13 19:08 采纳率: 72.1%
浏览 7
已结题

附加属性的change事件中无法访问依赖属性

问题描述: 直接上图

img


如上图所示,里面涉及三个对象,1附加属性AccessibilityVisibilityAttach,
2.依赖属性SwitchImageVisibility,
3.附加属性AccessibilityVisibilityAttach的onchange事件OnAccessibilityVisibilityAttachChanged

下面附上相应的代码

public static Visibility GetAccessibilityVisibilityAttach(DependencyObject obj)
{
    return (Visibility)obj.GetValue(AccessibilityVisibilityAttachProperty);
}
public static void SetAccessibilityVisibilityAttach(DependencyObject obj, Visibility value)
{
    obj.SetValue(AccessibilityVisibilityAttachProperty, value);
}
public static readonly DependencyProperty AccessibilityVisibilityAttachProperty =
    DependencyProperty.RegisterAttached("AccessibilityVisibilityAttach", typeof(Visibility), typeof(UCAccessibilityFootViewModel), 
        new PropertyMetadata(Visibility.Visible, OnAccessibilityVisibilityAttachChanged));

/// <summary>
/// 是否显示切换图标
/// </summary>
public Visibility SwitchImageVisibility
{
    get { return (Visibility)GetValue(SwitchImageVisibilityProperty); }
    set { SetValue(SwitchImageVisibilityProperty, value); }
}
public static readonly DependencyProperty SwitchImageVisibilityProperty =
    DependencyProperty.Register("SwitchImageVisibility", typeof(Visibility), typeof(UCAccessibilityFootViewModel), new PropertyMetadata(Visibility.Visible));

private static void OnAccessibilityVisibilityAttachChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
    Visibility newVisibility = (Visibility)e.NewValue;
    SetAccessibilityVisibilityAttach(obj, newVisibility);

    SwitchImageVisibility = newVisibility;   //这里是无法直接访问SwitchImageVisibility的
}

提出问题:
我无法在静态OnAccessibilityVisibilityAttachChanged函数中去访问
非静态的依赖属性SwitchImageVisibility。
在此请教各位,期待大家的指点,感谢!

  • 写回答

9条回答 默认 最新

  • threenewbee 2023-11-13 23:33
    关注

    你输出下 typeof 那个类型,可以考虑反射去访问属性

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月13日