Объединить строку из переменной в привязках XAML Xamarin.Forms - PullRequest
1 голос
/ 21 января 2020

В проекте Xamarin.Forms мне нужно объединить значение Localized String с привязкой свойства строки,

Я хочу достичь чего-то вроде

<Label Text="{Binding Name}", 
       StringFormat='Created By {0}' />

, но Создано должна появиться строка,

LocalizedStrings.CreatedBy

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 21 января 2020

Это достижимо при использовании свойства ForamttedText Label. Ссылка на MS Docs

<Label>
    <Label.FormattedText>
        <FormattedString>
            <Span Text="{x:Static Resources:LocalizedStrings.CreatedBy}" />
            <Span Text="{Binding Name, StringFormat=' {0}'}"/>
        </FormattedString>
    </Label.FormattedText>
</Label>

, где Ресурсы - импорт для LocalizedStrings

1 голос
/ 21 января 2020

в xaml, добавьте имя для ссылки на метку,

<Label x:Name="myLabel" />

в выделенном коде,

myLabel.SetBinding(
    Label.TextProperty,
    new Binding(nameof(MyModal.Name), stringFormat: $"{LocalizedStrings.CreatedBy} {{0}}"));

таким образом мы можем отформатировать свойства строки привязки с переменной значения.

Альтернативный подход:

Вы также можете использовать FormattedText свойства Метка следующим образом, однако это не оптимизированный подход .

Импорт LocalizedStrings до xmlns: ресурсы , затем

<Label>
    <Label.FormattedText>
        <FormattedString>
            <Span Text="{x:Static Resources:LocalizedStrings.CreatedBy}" />
            <Span Text="{Binding Name, StringFormat=' {0}'}"/>
        </FormattedString>
    </Label.FormattedText>
</Label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...