7 c# wpf xaml resourcedictionary
我试图通过C#访问UserControl代码隐藏中的资源字典,但我收效甚微.
合并词典:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/BiometricDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
嵌入字典:
<UserControl.Resources>
<BitmapImage x:Key="imageDefault">/Resources/Images/default_thumb.png</BitmapImage>
<BitmapImage x:Key="imageDisconnected">/Resources/Images/disconnect_thumb.png</BitmapImage>
<BitmapImage x:Key="imageFailed">/Resources/Images/failed_thumb.png</BitmapImage>
<BitmapImage x:Key="imageSuccess">/Resources/Images/success_thumb.png</BitmapImage>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
代码背后:
var resourceDictionary = new ResourceDictionary();
resourceDictionary.Source = new Uri("/Resources/BiometricDictionary.xaml", UriKind.Relative);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有的例子和有用的提示,但很快就会出现.现在,成功将是加载字典的能力.有什么建议?
要在代码隐藏中访问UserControl的一个XAML资源,您只需访问UserControl的Resources属性即可.像这样的东西:
BitmapImage myImage = (BitmapImage)this.Resources["imageDefault"];
Run Code Online (Sandbox Code Playgroud)
但是,首选方法是使用FindResource(),它将搜索整个逻辑树以匹配键,而不仅仅是调用它的对象.
BitmapImage myImage = (BitmapImage)this.FindResource("imageDefault");
Run Code Online (Sandbox Code Playgroud)
那么,您在 UserControl 的程序集中定义了 ResourceDictionary,并且想要从该 UserControl 的代码隐藏中访问它?
你应该能够。但是,如果您列出的代码位于构造函数中,则您可能无法访问资源字典(可能尚未加载)。尝试将相同的代码添加到用户控件的“已加载”事件中,看看是否有效。如果您只是尝试访问资源,例如样式或模板,则直接从类中使用“ FindResource ”或“ TryFindResource ”函数也应该可以工作(即您不需要具有类型为“ ”的对象资源字典”)。
希望有帮助!
| 归档时间: |
|
| 查看次数: |
39021 次 |
| 最近记录: |