如何通过StringFormat在wpf中填充字符串? 我正在使用多重绑定:
<MultiBinding StringFormat="Name: {0}, age: {1}">
<Binding Path="Name"/>
<Binding Path="Age"/>
</MultiBinding>
有没有办法填充字符串,例如列Age从位置50开始?我正在寻找类似于
的东西string.PadLeft(50)
答案 0 :(得分:2)
您应该能够以字符串格式填充您的值,如下所示:
<MultiBinding StringFormat="Name: {0}, age: {1,50}">
<Binding Path="Name"/>
<Binding Path="Age"/>
</MultiBinding>
但是,您应该注意,您的请求不填充的工作原理。在 Age
值之后,Name
值将填充50个空格,而不是从第50位开始。
我无法知道,当Age
值位于MultiBinding
时,它将强制确定age
值的确切起始位置,除非它是第一个数据绑定值。此外,这只会填充实际值,而不是{{1}}文本。
答案 1 :(得分: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>