所以我有一个类,看起来像这样:
internal class MyClass
{
public static readonly DependencyProperty IsSomethingProperty =
DependencyProperty.RegisterAttached(
"IsSomething", // property name
typeof(bool), // property type
typeof(MyClass), // owner type
new FrameworkPropertyMetadata(false)
);
public static void SetIsSomething(DependencyObject obj, bool value)
{
obj.SetValue(IsSomethingProperty, value);
}
[AttachedPropertyBrowsableForType(typeof(TreeViewItem))]
public static bool GetIsSomething(DependencyObject obj)
{
return (bool)obj.GetValue(IsSomethingProperty);
}
}
我希望能够将此附加属性用作控件模板中的触发器属性,如下所示:
<ControlTemplate TargetType="TreeViewItem">
<!-- stuff here omitted for brevity -->
<Trigger Property="my:MyClass.IsSomething" Value="True">
<!-- setters for when IsSomething is True -->
</Trigger>
</ControlTemplate>
(上述控制模板假定
xmlns:my="clr-namespace:MyAssembly"
其中myassembly包含myclass在封闭的xaml文件中)
这是我的问题:当我这样做的时候,它编译得很好。但是,当我试图在设计器中看到这个控件模板的实际应用时,它会抱怨
Cannot find the 'IsSomething' template property on type 'System.Windows.Controls.TreeViewItem'.
设计师不会加载。
我试过了
RegisterAttached
重写
MyClass
以及
TreeViewItem
作为所有者类型,两者都不修复此问题。我也试过了,有没有
AttachedPropertyBrowsableForType
属性对
GetIsSomething
. 有人看到问题了吗?