gpt4 book ai didi

c# - Xaml 中的静态字符串

转载 作者:太空狗 更新时间:2023-10-30 01:32:02 24 4
gpt4 key购买 nike

<分区>

我有一个包含一些静态信息的类,即:

public static class MyApp
{
public static string Name = "Awesome App";
public static string Version = "1.0";
}

我想在我的应用程序中显示应用程序名称的任何地方使用这个字符串,我遇到的问题是在一些地方有超过变量字符串。

例如:

<TextBlock Text="Awesome App running version 1.0"/>

我希望它从静态变量中填充。我读了一些书,看到了几个选项:

1。使用 MultiBinding 并加载相关的 ResourceDictionary:

<ResourceDictionary>
<sys:String x:Key="AppName">Awesome App</sys:String>
<sys:String x:Key="AppVersion">1.0</sys:String>
</ResourceDictionary>

<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} running version {1}">
<Binding Path="{StaticResource AppName}"/>
<Binding Path="{StaticResource AppVersion}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>

我想我也可以有多个 TextBlock:

<TextBlock>
<TextBlock Text="{StaticResource AppName}"/>
<TextBlock Text=" running version "/>
<TextBlock Text="{StaticResource AppVersion}"/>
<TextBlock>

2。使用具有静态属性的静态“字符串”类:

public static class Strings
{
public static string ProductRunningVersion =>
$"{MyApp.Name} running version {MyApp.Version}";
}

<TextBlock Text="{x:Static local:Strings.ProductRunningVersion}"/>

在属性中使用 => 是有意的 - 在测试时我遇到了一些静态变量的初始化顺序问题。 (有些是通过静态构造函数初始化的)


我不确定哪种方法更好。方法一感觉更“恰当”但也很困惑。方法二感觉更简洁,但不像我在 WPF 中使用的那样典型。还必须将字符串定义为 get 函数而不是静态字符串会产生一些成本吗?

这两种方法都好吗?我并不是真的在本地化之后,更多的是在整个应用程序中更改名称和一些图像。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com