定义和使用代码和xaml中的资源
本文关键字:资源 xaml 代码 定义 | 更新日期: 2023-09-27 18:14:15
我试图定义颜色,画笔和其他几个作为系统资源,并在代码和xaml中使用它们,就像我在AppResources中定义的字符串一样。并在
这样的代码中使用它们 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
或任何其他东西,一次又一次地使用以后。
请帮忙!
当我试图实现这一点时,我遇到了很多解决方案,最终得到了最好的解决方案。请按照以下步骤操作。
首先在项目中创建一个名为Themes的文件夹,并在其中添加一个类文件。将类文件命名为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中使用solidColorBrush:
<Border BorderThickness="1"
BorderBrush="{StaticResource ErrorColor}">
</Border>
有关使用应用程序资源的更多详细信息,请参阅链接
请参阅此处以获得有关一般Xaml资源的更深入了解
编辑
在后面的代码中,虽然我不建议这样做,因为有更多的错误空间:
SolidColorBrush = this.FindResource("ErrorColor") as SolidColorBrush;