【问题标题】:How to format string in XAML Setter Value?如何在 XAML Setter Value 中格式化字符串?
【发布时间】:2009-02-09 13:53:53
【问题描述】:

我已经学会了如何在标签的内容属性中格式化字符串,如下所示:

<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>

【问题讨论】:

    标签: data-binding xaml


    【解决方案1】:

    您可以简单地使用 Binding 本身的 StringFormat 属性吗?

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

    【讨论】:

    • 原始编辑错误。 {} 位于错误的位置。除非它位于字符串的开头,而不是直接位于 {0} 之前,否则它不起作用
    【解决方案2】:

    我无法对此进行测试,但希望它有效:

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

    【讨论】:

    • 这行得通,但是你剥夺了设计者设置格式字符串的能力。
    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2017-04-20
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多