我的问题几乎与这个相同:
除了该问题仅适用于静态资源。我想知道如何使用动态资源来做到这一点。详细地:
我使用资源作为“类变量”来控制对象的颜色。所以我有这个:
<Style x:Key="CustomScrollBarStyle" TargetType="{x:Key ScrollBar}">
<Style.Resources>
<SolidColorBrush x:Key="HighlightColor" Color="Blue"/>
</Style.Resources>
<Setter Property="Template".../>
</Style>
每当我使用滚动条时,我都可以自定义颜色:
<ScrollBar>
<ScrollBar.Resources>
<SolidColorBrush x:Key="HighlightColor" Color="Yellow">/
</ScrollBar.Resources>
</ScrollBar>
如果我总是用 {DynamicResource} 引用 HighlightColor,这非常有效。但我不知道如何将它提高一级。例如,我有一个组合框,它也有自己的颜色样式。我也想在滚动条上使用这种颜色:
<Style x:Key="ComboBoxStyle1" TargetType="{x:Type ComboBox}">
<Style.Resources>
<SolidColorBrush x:Key="ComboBoxColor" Color="Black"/>
</Style.Resources>
...
<ControlTemplate>
<ScrollBar>
<SolidColorBrush x:Key="HighlightColor" ???? use ComboBoxColor/>
</ScrollBar>
</ControlTemplate>
...
</Style>
我尝试过使用绑定,但它给出了一个异常,即绑定源不能是 DynamicResource。如果我将颜色绑定为 StaticResource,它只使用默认颜色。我也尝试过直接创建一个 DynamicResource 但它抱怨只适用于依赖属性并且不能直接插入到资源字典中。
那么如何从现有资源动态创建新资源呢?
谢谢。
更新 看起来没有办法做到这一点。所以我决定只使用附加属性。他们完美地工作。