动态值,如 ResourceDictionary 中的数字

Dynamic values like digit at ResourceDictionary

例如我有这样的东西

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <sys:String x:Key="USERNAME_AUTH_CONTENT">User auth success</sys:String>
</ResourceDictionary>

在后面的代码中,有时,我使用这个

var text = findRes("USERNAME_AUTH_CONTENT");

是否可以像这样制作smth:

<ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <sys:String x:Key="USERNAME_AUTH_CONTENT">User %username auth success</sys:String>
</ResourceDictionary>

并在代码隐藏处

var text = findRes("USERNAME_AUTH_CONTENT", "here is i want to paste username");

最后我想看这个:'User AwesomeUserName auth success'

在 C++ 中,我可以使用 %d 作为字符串。 C# 和资源呢?

C# 使用 {0}{1} 等占位符来格式化字符串。

用占位符声明xaml资源

<system:String x:Key="USERNAME_AUTH_CONTENT">User {0} auth success</system:String>

并使用 String.Format 应用格式:

var text = FindResource("USERNAME_AUTH_CONTENT") as string;
if (text != null)
{
    text = String.Format(text, "AwesomeUserName");
}

另请注意,您可以直接使用来自 xaml 的格式字符串:

<TextBlock Text="{Binding Source='AwesomeUserName', StringFormat={StaticResource USERNAME_AUTH_CONTENT}}"/>

(Source='AwesomeUserName'只是一个例子,如果你有视图模型,那么使用Binding Path=SomeProperty)