2

SolidColorBrushアプリの実行中に、C# コードから xamlの a の色を変更したいと考えています。(これは WinRT XAML Toolkit の円グラフで、スライスの色を変更したいです。)

<charting:Chart.Palette>
    <charting:ResourceDictionaryCollection>
        <ResourceDictionary>
            <SolidColorBrush x:Key="MyBrush" Color="#4586d8"/>
            <Style x:Key="DataPointStyle" TargetType="Control">
                <Setter Property="Background" Value="{StaticResource MyBrush}"/>
            </Style>
        </ResourceDictionary>
    </charting:ResourceDictionaryCollection>
</charting:Chart.Palette>

Win8アプリにはDynamicResourceがないため、これは私が成功しなかった設定方法です:

Color yellow = Color.FromArgb(0xff, 0xff, 0xb9, 0x01);
Application.Current.Resources["MyBrush"] = new SolidColorBrush(yellow);

リソースの色を設定するにはどうすればよいですか?

4

1 に答える 1

1

私はWPFで考えるDynamicResource基本的に、リクエストされるたびに新しいインスタンスを作成し、リソース依存階層の変更を再評価します。あなたがしたいことに応じて、あなたの場合は異なる方法でアプローチします。スタイル/テンプレートを更新して基本色を変更したり、視覚的な状態を変更して、色を変更する状態の変更に応答させたり、添付された動作を記述したりできます (添付プロパティを直接使用するか、いくつかのオープン ソース WinRT 動作を使用します)。イベントまたはバインドされたプロパティに基づいてブラシを更新するデータ ポイントに設定する実装)、ビジュアル ツリーをトラバースして色ベースを更新するか、2 つのほぼ同一のオーバーレイ チャート コントロールを異なる色で作成し、チャート コントロールの可視性を変更して色を変更します。

于 2013-03-08T18:25:56.543 に答える