【发布时间】:2011-04-21 08:45:58
【问题描述】:
我是 wpf 的新手。我目前正在开发自定义控件,并且我希望从 xaml 严格定义某些属性。我想要实现的示例是 Effect 属性,它只显示“必须在 XAML 中设置值”文本。有人可以告诉我该怎么做,或者我应该使用哪个属性?提前致谢
【问题讨论】:
我是 wpf 的新手。我目前正在开发自定义控件,并且我希望从 xaml 严格定义某些属性。我想要实现的示例是 Effect 属性,它只显示“必须在 XAML 中设置值”文本。有人可以告诉我该怎么做,或者我应该使用哪个属性?提前致谢
【问题讨论】:
如果你想在属性面板中隐藏属性,你可以使用 BrowsableAttribute 来实现:
视觉设计器通常会在“属性”窗口中显示那些没有可浏览属性或使用值为 true 的 BrowsableAttribute 构造函数标记的成员。这些成员可以在设计时进行修改。 使用值为 false 的 BrowsableAttribute 构造函数标记的成员不适用于设计时编辑,因此不会显示在可视化设计器中。默认为真。
[Browsable(false)]
public int HiddenProperty {
get {
// Insert code here.
return 0;
}
set {
// Insert code here.
}
}
【讨论】:
你需要依赖属性
http://msdn.microsoft.com/en-us/library/ms752914.aspx
public static readonly DependencyProperty IsSpinningProperty =
DependencyProperty.Register(
"IsSpinning", typeof(Boolean),...);
public bool IsSpinning
{
get { return (bool)GetValue(IsSpinningProperty); }
set { SetValue(IsSpinningProperty, value); }
}
或者简单地将效果添加到新控件的 xaml 中:
<local:NewControl>
<local:NewControl.Effect>
<DropShadowEffect/>
</local:NewControl.Effect>
</local:NewControl>
【讨论】: