我正在尝试将Colors,Brushes和其他几个定义为系统资源,稍后从代码和xaml中使用它们就像我在AppResources.resx中定义了字符串并在代码中使用它们
MyApp.Resources.AppResources.MyStringResource
和xaml一样
Text="{Binding Source={StaticResource LocalizedStrings}, Path=LocalizedResources.MyStringResource}"
我在寻找解决方案的时候在几个地方偶然发现ResourceDictionary
。但我还不知道如何以及在何处添加ResourceDictionary
我尝试在App.xaml中添加它,如下所示:
<Application.Resources>
<ResourceDictionary>
<local:LocalizedStrings xmlns:local="clr-namespace:DataBoundApp1" x:Key="LocalizedStrings"/>
<SolidColorBrush Color="#FF0000" x:Key="ErrorColor"></SolidColorBrush>
</ResourceDictionary>
</Application.Resources>
但我不知道如何在Code和xaml中使用它。还有其他任何方式或地方我可以添加ResourceDictionary
或任何其他东西,以便以后再次使用。
请帮助!
答案 0 :(得分:2)
我在尝试实现这一目标时遇到了很多解决方案,并最终得到了最佳解决方案。请按照以下步骤操作。
首先在项目中创建一个名为主题的文件夹,然后在其中添加一个类文件。命名名为 Generic.xaml 的类文件,替换现有的C#代码并将以下文件添加到其中。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush Color="#FF0000" x:Key="ErrorColor"></SolidColorBrush>
</ResourceDictionary>
重建项目。然后在App.xaml中添加以下代码行。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
最后在项目中的任何地方应用样式,如下所示
<TextBlock Text="Hello" Foreground="{StaticResource ErrorColor}"/>
在 Generic.xaml 中添加所需的样式,并在项目中调用这些样式。
答案 1 :(得分:1)
您可以在xaml中使用solidColorBrush,如下所示:
<Border BorderThickness="1"
BorderBrush="{StaticResource ErrorColor}">
</Border>
See link for more details on using Application Resources
See here for a more in depth look at Xaml resources in general
修改强>
在代码背后,虽然我不建议这样做,因为你会有更多的错误空间:
SolidColorBrush = this.FindResource("ErrorColor") as SolidColorBrush;