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);
    }

但我不能使用“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 回答