Wpf 如何在一个位置为资源定义x:Key,并在XAML和代码隐藏中使用它

Wpf 如何在一个位置为资源定义x:Key,并在XAML和代码隐藏中使用它,wpf,xaml,resources,Wpf,Xaml,Resources,标题中的问题大致概括了这一点。我在XAML中定义了一些资源对象,我也希望在代码隐藏中访问它。那么,有没有一种方法可以在一个位置为它定义x:Key,而不是在XAML和code behind中硬编码x:Key(作为字符串)?在XAML中,您可以像这样引用它: {StaticResource myResource} 在代码隐藏中,您将使用该方法。如果您不想对字符串进行两次编码,可以将其存储为静态变量,这里我将其放在App.cs中 public partial class App : Applicat

标题中的问题大致概括了这一点。我在XAML中定义了一些资源对象,我也希望在代码隐藏中访问它。那么,有没有一种方法可以在一个位置为它定义x:Key,而不是在XAML和code behind中硬编码x:Key(作为字符串)?

在XAML中,您可以像这样引用它:

{StaticResource myResource}

在代码隐藏中,您将使用该方法。

如果您不想对字符串进行两次编码,可以将其存储为静态变量,这里我将其放在App.cs中

public partial class App : Application
{
    public static string Key1 = "testKey";
}
当您想在应用程序的资源中使用此密钥时,您可以这样做

<Application.Resources>        
   <SolidColorBrush x:Key="{x:Static local:App.Key1}"/>
</Application.Resources>
在您使用的XAML中使用资源

<TextBox Background="{StaticResource {x:Static local:App.Key1}}" 

你的意思是你不想在XAML中编写x:Key=“STRING”,然后在code behind中再次在FindResource(“STRING”)中编写x:Key=“STRING”,你想用某种方法创建它一次,并保护自己不必在两个地方进行关键更改吗?是的,这正是我想要的+1,以聪明而具体的方式回答这个问题;这确实会将字符串定义移动到一个位置。不过,我想知道它对XAML加载性能有何影响,这种方法在
数据模板
样式
中是否有用,以及它是否在
触发器
中工作。老实说,我从未尝试过。只是因为我很好奇,想看看是否能做到。我认为它需要更多的代码,而不仅仅是把字符串放进去。XAML编辑器中没有intellisense,因此它没有真正的帮助。嘿,这很好用,只是测试了一下。我从未想过使用静力学。使用数据模板和样式设置器/触发器。谢谢np,奇怪的是,没有人因为我使用“静态变量”这个术语而责怪我lol:DYou可以使用nameof完全去掉字符串<代码>公共部分类应用程序:应用程序{public const string TestKey=nameof(TestKey);}
Culd您提供了更多详细信息吗?您是如何定义myResource的?
<TextBox Background="{StaticResource {x:Static local:App.Key1}}"