re:后面的代码无法访问资源

时间:2016-07-27 03:54:40

标签: c# wpf

我有一个MainWindow类(来自Window),我试图在我的任务栏上设置Overlay图标。

this.TaskbarItemInfo.Overlay =(ImageSource)Resources [" WarningImage"];

无论我尝试什么,资源都是空的(计数0),即使我在xaml中添加了一个图像对象。是否有一种可靠的方法来设置Overlay图标绕过资源,从文件加载图像?有没有办法在应用程序的ResourceDictionary中引用资源,以便我可以使用该方法设置Overlay。

//资源为空没有找到图像

var test = (DrawingImage)this.FindResource("WarningImage");
this.TaskbarItemInfo.Overlay = (ImageSource)Resources["WarningImage"];

谢谢你, 〜 - [R

 <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Styles/AppStyles.xaml"/>
                <ResourceDictionary>
                    <DrawingImage x:Key="WarningImage">
                        <DrawingImage.Drawing>
                            <ImageDrawing Rect="0,0,16,16" ImageSource="/Images/question.png" />
                        </DrawingImage.Drawing>
                    </DrawingImage>
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

1 个答案:

答案 0 :(得分:0)

由于您正在创建资源字典,因此导致问题。只需将它保存在像这样的Window.Resources

<Window.Resources>
    <DrawingImage x:Key="WarningImage">
        <DrawingImage.Drawing>
            <ImageDrawing Rect="0,0,16,16" ImageSource="/Images/question.png" />
        </DrawingImage.Drawing>
    </DrawingImage>
</Window.Resources>

以这种方式访问​​资源:

var test = (DrawingImage)this.FindResource("WarningImage");
var test1 = (DrawingImage)this.FindName("WarningImage");