定义和使用代码和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或任何其他东西,一次又一次地使用以后。

请帮忙!

定义和使用代码和xaml中的资源

当我试图实现这一点时,我遇到了很多解决方案,最终得到了最好的解决方案。请按照以下步骤操作。

首先在项目中创建一个名为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;