我在MSDN上发现了这个:
可以通过引用资源来设置依赖项属性值。资源通常指定为页面根元素或应用程序的Resources
属性值(这些位置可以最方便地访问资源)。以下示例显示如何定义SolidColorBrush
资源。
XAML:
<DockPanel.Resources>
<SolidColorBrush x:Key="MyBrush" Color="Gold"/>
</DockPanel.Resources>
定义资源后,您可以引用资源并使用它来提供属性值:
<Button Background="{DynamicResource MyBrush}" Content="I am gold" />
此特定资源被引用为DynamicResource标记扩展。 要使用动态资源引用,您必须设置为依赖项属性,因此它特别是WPF属性系统启用的动态资源引用用法。
我的问题是:
您还可以举例说明如何使用Dependency Property实现默认值吗?
答案 0 :(得分:1)
DynamicResource 用于设置仅依赖项属性值。
相比之下 StaticResource 可以在任何地方使用。您可以使用它来设置依赖项属性值,但不仅。例如,您还可以将元素定义为资源,并通过 StaticResource 在面板中使用它,例如在代码中
<Window>
<Window.Resources>
<Button Content="btnStaticResource" x:Key="myBtn" />
</Window.Resources>
<Grid>
<StaticResource ResourceKey="myBtn" />
</Grid>
</Window>
关于问题1 ,资源不是依赖项属性,无论您是使用 StaticResource 还是 DynamicResource 标记扩展引用它。
WPF中的资源可以是任何东西,.NET对象,字体,图像,颜色,字符串等。 资源的概念与依赖属性的概念无关。
依赖项属性是WPF引入的一种新属性。根据固定的层次结构,依赖属性值取决于多个源(有关详细信息msdn)。
关于问题2 ,是的,StaticResource的概念是WPF资源系统的一部分。
最后,要定义依赖项属性的默认值,请参阅以下代码:
public static readonly DependencyProperty AlphaProperty = DependencyProperty.Register ("Alpha", typeof(int), typeof(MyButton), new FrameworkPropertyMetadata(255, FrameworkPropertyMetadataOptions.AffectsRender));
这里定义了一个名为Alpha的依赖属性,类型为int,默认值为255。
我希望这会有所帮助