无法从应用程序级别获取资源

时间:2012-05-01 18:24:11

标签: c# wpf xaml

我的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”因为它在定义后为null。我怎样才能获得该资源?

2 个答案:

答案 0 :(得分: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");

希望这会有所帮助

答案 1 :(得分: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); 
}