4

私のapp.xaml:

<Application.Resources>
    <RadialGradientBrush x:Key="myBrush">
        <GradientStop Color="#FFC44EC4" Offset="0" />
        <GradientStop Color="#FF829CEB" Offset="1" />
        <GradientStop Color="#FF793879" Offset="0.669" />
    </RadialGradientBrush>
</Application.Resources>

ここで私はそれを使おうとしています:

private void btnOK_Click(object sender, RoutedEventArgs e)
    {
        RadialGradientBrush b = (RadialGradientBrush)Resources["myBrush"];
        //b.GradientStops[1] = new GradientStop(Colors.Red,0.0);
    }

しかし、定義後にnullになるため、「b」は使用できません。どうすればそのリソースを入手できますか?

4

2 に答える 2

6

コントロールのリソースから「描画」しているので、代わりにこれらのいずれかを試してください...

res = this.FindResource("myBrush"); // this 'walks' the tree and will find it
res = Application.Current.Resources["myBrush"]; // or reference app resources directly
res = App.Current.TryFindResource("myBrush");

お役に立てれば

于 2012-05-01T18:45:29.313 に答える
1

あなたは btnOK_Click イベントからリソースに到達しようとしているので、メソッドがウィンドウ オブジェクトに属していると仮定します。したがって、間違った場所でリソースを探しています。代わりに、アプリケーションのリソース ディクショナリを参照する必要があります。

したがって、私の提案は次のとおりです。

private void btnOK_Click(object sender, RoutedEventArgs e) 
{ 
    RadialGradientBrush b = (RadialGradientBrush)Application.Current.Resources["myBrush"]; 
    b.GradientStops[1] = new GradientStop(Colors.Red,0.0); 
} 
于 2012-05-01T18:59:43.820 に答える