我有一个解决方案,其中我有一个Windows Phone App项目和一个ClassLibrary,它本身有TemplatedControl.cs
,其默认样式在 ClassLibrary / Themes / Generic.xaml 资源字典中引用点。
- MySolution
- WPApp_Project
- MainPage.xaml/MainPage.xaml.cs
- App.xaml/App.xaml.cs
- ClassLibrary_Project
- Themes
- Generic.xaml
- View
- TemplatedControl.cs
- ViewModel
- TemplatedViewModel.cs
- ViewModelLocator.cs
例如,我在Generic.xaml文件中定义了这个:
<SolidColorBrush x:Key="MyBrush" Color="Gold"/>
如何从我的WP应用程序中将此SolidColorBrush
的值更改为影响使用此资源的ClassLibrary中的每个元素的范围?
答案 0 :(得分:1)
在基本值已加载之后,你基本上只需要用另一个值覆盖x:Key。您可以通过动态加载包含要覆盖的键的资源文件来执行此操作。
要动态加载XAML资源字典,您可以执行以下操作:
Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri("pack://application:,,,/WPF.Common.UI;component/Resources/Dictionaries/ApplicationResourceDictionary.xaml") });
答案 1 :(得分:0)
我设法找到了这样做的方法。由于我在TemplatedViewModel.cs
中附加了Generic.xaml
属性,我基本上为我想要更改的内容创建了额外的属性,即,如果我想更改TextBlock的颜色,我添加了关注我的Generic.xaml
:
<TextBlock Content="I am a TextBlock" Foreground="{Binding Path=HappyColor}" />
在我的WPApp中,我得到了TemplatedViewModel.cs
的一个实例并将其设置为新颜色:
TemplatedViewModel viewModel = ViewModelLocator.TemplatedStatic;
viewModel.HappyColor = "#00FF00";
理想情况下,我希望能够在XAML的ResourceDictionary
中设置属性,但我无法做到。因此,如果有人能告诉我如何做到这几天,我会将他们的答复标记为答案。