从WPF UserControl访问ResourceDictionary
我正试图通过C#访问UserControl代码隐藏中的资源字典,但我收效甚微。
合并词典:
嵌入字典:
/Resources/Images/default_thumb.png /Resources/Images/disconnect_thumb.png /Resources/Images/failed_thumb.png /Resources/Images/success_thumb.png
代码背后:
var resourceDictionary = new ResourceDictionary(); resourceDictionary.Source = new Uri("/Resources/BiometricDictionary.xaml", UriKind.Relative);
我已经尝试了所有的例子和有用的提示,但很快就会出现。 现在,成功将是加载字典的能力。 有什么建议?
要在代码隐藏中访问UserControl的一个XAML资源,您只需访问UserControl的Resources属性即可。 像这样的东西:
BitmapImage myImage = (BitmapImage)this.Resources["imageDefault"];
但是,首选方法是使用FindResource(),它将搜索整个逻辑树以匹配键,而不仅仅是调用它的对象。
BitmapImage myImage = (BitmapImage)this.FindResource("imageDefault");
尝试删除您所在位置的正斜杠。 你应该使用/ Resources的唯一时间是你必须先上一个图书馆。 比如../Resources
希望这对你有所帮助。
那么,你有一个在UserControl的程序集中定义的ResourceDictionary,并希望从UserControl的代码隐藏中访问它?
你应该能够。 但是,如果您列出的代码位于构造函数中,则可能无法访问资源字典(可能尚未加载)。 尝试将相同的代码添加到UserControl的“已加载”事件中,看看是否有效。 如果您只是尝试访问资源(例如样式或模板),则直接从您的类使用“ FindResource ”或“ TryFindResource ”函数也应该可以正常工作(即您不需要具有类型的对象“资源字典“)。
希望有所帮助!
d’Oh …在编译到本地bin后,引用是相对的,我实现了这里找到的包URI解决方案: ResourceDictionary在一个单独的程序集中 ,然后是FindResource(x:键值在这里)。
@PeterAllenWeb,@ Pwninstein,感谢您的快速反应并让我再次思考。
上述就是C#学习教程:从WPF UserControl访问ResourceDictionary分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1011458.html