有没有办法在代码中将动态资源分配给依赖项 属性
Is there a way to assign a dynamic resource to a dependency property in code
我在资源字典中定义了一个 SolidColorBrush,如下所示:
<Color x:Key="ColorGray100">#F5F6F7</Color>
<SolidColorBrush x:Key="BrushGray100" Color="{DynamicResource ColorGray100}" />
我在后面的代码中为用户控件定义了一个依赖项 属性,如下所示:
/// <summary>
/// get/set the brush for the pattern ring.
/// The pattern ring is a full circle which the progress ring is drawn over.
/// This Brush value is defaulted to Brushes.LightGray
/// </summary>
public Brush PatternRingBrush
{
get => (Brush)GetValue(PatternRingBrushProperty);
set => SetValue(PatternRingBrushProperty, value);
}
public static readonly DependencyProperty PatternRingBrushProperty =
DependencyProperty.Register("PatternRingBrush", typeof(Brush), typeof(UXProgressRing),
new UIPropertyMetadata(Brushes.LightGray));
如何将“BrushGray100”SolidColorBrush 指定为默认 UI属性元数据值而不是 Brushes.LightGray?
无法将动态资源分配给依赖项 属性 的默认值。 (这也没有意义,因为默认值被评估一次,而动态资源可以根据定义更改)
但是,如果您的目标是将实际依赖项 属性 值分配给动态资源,有效地将 属性 绑定到动态资源,则此站点上已经存在描述如何实现的答案要做到这一点。 This 似乎是现有的最佳解决方案。
我将此作为答案发布而不是标记为重复,因为您的问题专门询问有关设置 默认 值的问题。
我在资源字典中定义了一个 SolidColorBrush,如下所示:
<Color x:Key="ColorGray100">#F5F6F7</Color>
<SolidColorBrush x:Key="BrushGray100" Color="{DynamicResource ColorGray100}" />
我在后面的代码中为用户控件定义了一个依赖项 属性,如下所示:
/// <summary>
/// get/set the brush for the pattern ring.
/// The pattern ring is a full circle which the progress ring is drawn over.
/// This Brush value is defaulted to Brushes.LightGray
/// </summary>
public Brush PatternRingBrush
{
get => (Brush)GetValue(PatternRingBrushProperty);
set => SetValue(PatternRingBrushProperty, value);
}
public static readonly DependencyProperty PatternRingBrushProperty =
DependencyProperty.Register("PatternRingBrush", typeof(Brush), typeof(UXProgressRing),
new UIPropertyMetadata(Brushes.LightGray));
如何将“BrushGray100”SolidColorBrush 指定为默认 UI属性元数据值而不是 Brushes.LightGray?
无法将动态资源分配给依赖项 属性 的默认值。 (这也没有意义,因为默认值被评估一次,而动态资源可以根据定义更改)
但是,如果您的目标是将实际依赖项 属性 值分配给动态资源,有效地将 属性 绑定到动态资源,则此站点上已经存在描述如何实现的答案要做到这一点。 This 似乎是现有的最佳解决方案。
我将此作为答案发布而不是标记为重复,因为您的问题专门询问有关设置 默认 值的问题。