WPF使用StringFormat进行填充

4

如何通过StringFormat在wpf中填充字符串?我正在使用多绑定:

<MultiBinding StringFormat="Name: {0}, age: {1}">
    <Binding Path="Name"/>
    <Binding Path="Age"/>
 </MultiBinding>

有没有办法使字符串填充,以便例如列年龄从位置50开始?我正在寻找类似于的东西
string.PadLeft(50)
2个回答

3
您应该可以像这样在字符串格式中填充您的值:
<MultiBinding StringFormat="Name: {0}, age: {1,50}">
    <Binding Path="Name"/>
    <Binding Path="Age"/>
 </MultiBinding>

然而,需要注意的是您的请求并不是填充的工作原理。 Age 值并没有从50位置开始,相反,在Name值后面,Age 值会用50个空格进行填充。
据我所知,除非它是第一个绑定的值,否则我没有发现任何可强制在 MultiBinding 中确切起始位置的方法。此外,这只会填充实际值,而不是age文本。

2
另一种方法可能是使用转换器(Converter)
public class PaddingConverter : IMultiValueConverter
{
    public int Width { get; set; }

    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        string name = values[0] as string;
        string age = values[1] as string;
        var text = String.Format("Name: {0}, age: {1}", name, age);
        return text.PadLeft(Width);
    }

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

并且你的XAML:

<local:PaddingConverter x:Key="PaddingConverter" Width="50"/>
<MultiBinding Converter={StaticResource PaddingConverter}>
    <Binding Path="Name"/>
    <Binding Path="Age"/>
</MultiBinding>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接