Динамические значения, такие как цифра в ResourceDictionary - PullRequest
0 голосов
/ 11 июня 2018

Например, у меня есть что-то вроде этого

<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");

Можно ли сделать что-то вроде этого:

<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");

В конце я хочу увидеть следующее: 'Пользователь AwesomeUserName auth success'

В c ++ я могу использовать% d для строки.А как насчет c # и ресурсов?

1 Ответ

0 голосов
/ 11 июня 2018

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...