首先,我会给你我的代码,之后我会问我的问题。
namespace LinearGradientBrushBinding
{
public partial class LinearGradBrush : UserControl
{
public LinearGradBrush()
{
InitializeComponent();
}
class LinearGradBrushProp : DependencyObject
{
public static DependencyProperty _background;
static void BackgroundBrush()
{
_background = DependencyProperty.Register(
"_background", typeof(Brush), typeof(LinearGradBrushProp));
}
[Description("CuloareBG"), Category("Z")]
public Brush Background
{
get { return (Brush)GetValue(_background); }
set { SetValue(_background, value); }
}
}
}
}
正如你所看到的,我有一个UserControl,里面有一个类。我的问题是为什么我没有在我的控件的属性窗口(UserControl.Xaml的右侧)中看到带有画笔的类别Z.
答案 0 :(得分:0)
为什么我没有在属性窗口(UserControl.Xaml的右侧)中看到我用它中的画笔控制类别Z.
很简单,因为您的LinearGradBrush
不包含使用类别Z
注释的属性。
您的LinearGradBrush
包含具有此类属性的(私有)内部类,但属性编辑器无法知道要为此内部类分配属性值的哪个实例。 (属性编辑器可能甚至无法看到这个内部类,因为它是私有的。)
我建议您将此属性移出内部类并删除该类。我不能老实地看到你需要在这里使用内部类的原因。
另外,我想指出你的依赖属性没有被正确声明。它没有使用正确的命名约定,我看不到对初始化依赖属性的BackgroundBrush()
方法的任何调用。我希望该属性声明如下(注意字段的名称,它是readonly
的事实,Register
方法的第一个参数是属性的名称):< / p>
public static readonly DependencyProperty BackgroundProperty =
DependencyProperty.Register("Background", typeof(Brush), typeof(LinearGradBrush));
[Description("CuloareBG"), Category("Z")]
public Brush Background
{
get { return (Brush)GetValue(BackgroundProperty); }
set { SetValue(BackgroundProperty, value); }
}
我对您的代码进行了此更改,切换到另一个XAML页面(即不是LinearGradBrush.xaml
),并将您的控件作为元素<local:LinearGradBrush />
添加到此XAML页面。当文本光标位于此元素上时,Background
属性出现在属性窗口的Z
类别中。