我的問題是幾乎相同,這一個:在XAML如何將資源複製到不同的標籤名稱動態
How to assign WPF resources to other resource tags
除了這個問題僅適用於靜態資源。我想知道如何用動態資源做到這一點。詳細:
我使用資源作爲'類變量'來控制對象的顏色。所以我有這樣的:
<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>
這個作品真的很好,我提供參考始終與HighlightColor {DynamicResource}。但我不知道如何把它提高一個等級。例如,我有一個組合框,也有它自己的顏色風格。我想用這個顏色的滾動條也:
<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,但它抱怨只適用於依賴項屬性,不能直接插入到資源字典中。
那麼我怎樣才能從現有的動態創建一個新的資源?
謝謝。
更新 看起來沒有辦法做到這一點。所以我決定只使用附加的屬性。他們完美地工作。
這不起作用。我想滾動條顏色繼承組合框顏色。因此,任何在其他地方使用組合框的人都可以覆蓋顏色,並且會自動顯示在滾動條中。只適用於那些滾動條。其他人將使用他們被覆蓋的任何顏色。 – philq
啊,那麼你需要的是創建一個ViewModel來存儲你的顏色。然後,您可以使用任何顏色(包括運行時)覆蓋它,然後使用綁定檢索它。 –
我知道這樣做,但如果有一種方法可以在純XAML中執行此操作,那將非常有用。如果只有您可以覆蓋它們,那麼資源可以像局部變量一樣工作。 – philq