Можно ли добавить дополнительные символы после привязки в xaml? - PullRequest
23 голосов
/ 09 февраля 2011

Мне было что-то интересно, и я не смог найти подходящих тем. У меня есть следующая привязка:

Content="{x:Static resx:Resource.Form_OtherOption_Description}"

Это поместит строку в метку. Я спрашивал себя, могу ли я добавить «:» после этой привязки, не в коде, просто в xaml. Ярлык представляет собой что-то вроде «Имя:». Но добавление «:» в качестве части привязки не вариант.

Редактировать

Я работаю в версии 3.5

Любые предложения.

Заранее спасибо.

Ответы [ 7 ]

32 голосов
/ 09 февраля 2011

Вы можете сделать это с помощью чего-то вроде:

<TextBlock Text="{Binding Source={x:Static resx:Resource.Form_OtherOption_Description},
                         StringFormat={}{0}:}" />

Редактировать: <Label> s Content свойство явно не относится к свойству StringFormat привязки. То, что я обнаружил, было перемещено в свойство ContentStringFormat в <Label>.

<Label Content="{x:Static resx:Resource.Form_OtherOption_Description}"
       ContentStringFormat="{}{0}:" />
19 голосов
/ 09 февраля 2011

Если вы используете WPF 4.0, вы также можете сделать это:

<TextBlock>
       <Run Text="{Binding SomeLabel}"/>
       <Run Text=":"/>
</TextBlock>

Это на самом деле объединяет две строки из двух тегов Run и копирует их в свойство TextBlock.Text! *

Используя этот подход, вы даже можете привязать к различным свойствам в Presenter и отобразить его в одном TexBlock.Посмотрите на этот превосходный пример:

Можем ли мы объединить два свойства в привязке данных?

10 голосов
/ 09 февраля 2011

Вы также можете использовать MultiBinding с StringFormat, например:

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="ID {0} Name: {1} Age: {2}">
            <Binding Source="{x:Static resx:SomeResx.ID}"/>
             <Binding Path="Name"/>
             <Binding Path="Age"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

Вы можете использовать это в элементе управления контентом TextBlock TextBlock.Text (извините, я не смог получить код, который будет показан выше)

3 голосов
/ 09 ноября 2015

Да, вы можете.Здесь я добавляю «тестирование» после привязки текста (clouds.all) в windows phone.

<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}testing}"/>
3 голосов
/ 09 февраля 2011

Попробуйте свойство Binding StringFormat - он может делать очень просто то, что вы хотите.

2 голосов
/ 30 мая 2016

если вы используете метку внутри индикатора выполнения, вы можете использовать этот способ:

<Label x:Name="Progress" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="Bold" Foreground="White" Opacity=".7" 
       Content="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}" ContentStringFormat="{}{0}%">

таким образом вы можете визуализировать значение индикатора выполнения с добавленным%.

0 голосов
/ 09 февраля 2011

Вы можете создать конвертер, который берет входную строку и добавляет ":".

public class AddStringToStringConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string input = value as string;
        string suffix = parameter as string;

        return input + suffix;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

Xaml:

<Window.Resources>
    <local:AddStringToStringConverter x:Key="AddStringToStringConverter"/>
</Window.Resources>
...
<Label Text="{Binding Source={x:Static resx:Resource.Form_OtherOption_Description}, Converter={StaticResource AddStringToStringConverter}, ConverterParameter=:}"/>

Или что-то в этом роде. Пробовал, и это работало для моего источника, по крайней мере.

Если у вас есть пробелы и т.п. ConverterParameter, вы можете использовать кавычки, чтобы убедиться, что он не удаляется.

Редактировать: Ах да ... да ... есть также StringFormat, который мне никогда не был нужен, хе-хе-хе ...

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