Как отформатировать строку в XAML Setter Value? - PullRequest
2 голосов
/ 09 февраля 2009

Я научился форматировать строки в атрибуте содержимого метки следующим образом:

<Label Content="{Binding ElementName=theSlider, Path=Value}" 
   ContentStringFormat="The font size is {0}."/>

Я хочу сделать то же самое в Setter, но «ValueStringFormat» не существует, каков правильный синтаксис для выполнения того, что я хочу сделать здесь:

<DataTrigger Binding="{Binding Path=Kind}" Value="Task">
    <Setter TargetName="TheTitle" Property="Text" 
       Value="{Binding Title}" 
       ValueStringFormat="Your title was: {0}"/>
</DataTrigger>

Ответы [ 2 ]

5 голосов
/ 20 февраля 2009

Можно ли просто использовать свойство StringFormat самой привязки?

<DataTrigger Binding="{Binding Path=Kind}" Value="Task">
    <Setter TargetName="TheTitle" Property="Text" 
        Value="{Binding Title,StringFormat='Your title was: {}{0}'}" 
        />
</DataTrigger>
1 голос
/ 11 февраля 2009

Я не могу проверить это, но надеюсь, что это сработает:

...
xmlns:local="clr-namespace:ValueConverter"
...

<Window.Resources>
   <local:MyTextConverter x:Key="MyTextConverter" />
</Window.Resources>

...
<DataTrigger Value="Task">
     <DataTrigger.Binding>
        <Binding Converter="{StaticResource MyTextConverter}"
            Path="Kind" />
     </DataTrigger.Binding>
     <Setter TargetName="TheTitle" Property="Text"/>
</DataTrigger>

где MyTextConverter - класс, реализующий интерфейс IValueConverter:

public class PositionConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, 
         CultureInfo culture)
    {
        return String.Format("Your title was: {0}", value);
    }

    public object ConvertBack(object value, Type targetType, object parameter,
        CultureInfo culture)
    {
        throw new Exception("The method or operation is not implemented.");
    }
...