簡體   English   中英

如何在動態資源中更新動態資源?

[英]How to update Dynamic Resource within a Dynamic Resource?

我有一個可視刷子,它是一組形狀,其​​主要顏色本身就是動態資源 - 因此形狀是例如MyShape和由Shape對象引用的Color,MyColour。
我的問題是當我為此更新顏色時 - 它只在第一次加載形狀時發生(顏色需要先設置)然而,盡管我更改了顏色但它不會更新使用顏色的動態資源 - 我該如何工作?
只需要讓動態資源在另一個動態資源中工作,並在我更改顏色時讓它們都更新。
我不知道如何讓它工作 - 我花時間為WPF創建一個顏色選擇器只發現我無法改變這個項目的顏色 - 1層資源工作在哪里我直接設置畫筆/顏色而不是顏色在另一個對象或2層資源中。

編輯:我的問題似乎是特定的在單獨的資源/字典中使用這些,因為我的程序需要從一個類而不是Window訪問此項目,當MyColor在一個單獨的資源時,提到的主要示例不起作用。

除非我誤解了這種情況,否則你所談論的確實很有效。 我剛用這個Xaml嘗試過:

<Window x:Class="ConditionalTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">

    <Window.Resources>
        <SolidColorBrush x:Key="MyColor" Color="Aqua" />

        <VisualBrush x:Key="MyBrush">
            <VisualBrush.Visual>
                <Ellipse Height="50" Width="100" Fill="{DynamicResource MyColor}" />
            </VisualBrush.Visual>
        </VisualBrush>
    </Window.Resources>
    <Grid Background="{DynamicResource MyBrush}">
        <Button Height="30" Width="Auto" VerticalAlignment="Center" HorizontalAlignment="Center" Content="ChangeColor" Click="Button_Click" />
    </Grid>
</Window>

然后更改該按鈕的單擊處理程序中的顏色:

private void Button_Click(object sender, RoutedEventArgs e)
{
    ((SolidColorBrush)Resources["MyColor"]).Color = Colors.Purple;
}  

它就像一個冠軍。

您可以發布一個示例,說明您是如何嘗試更改資源字典中的顏色的嗎?

當我創建一個示例應用程序並嘗試更改資源值時,似乎資源字典中的SolidColorBrush已被凍結,因此無法修改它。 為了解決這個問題,我只需將新值設置為新的SolidColorBrush。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM