在Windows Phone中绑定StringFormat
本文关键字:绑定 StringFormat Phone Windows | 更新日期: 2023-09-27 18:29:39
我为windows phone 8开发了silverlight应用程序。我在LongListSelector中绑定整数值,例如123。我想让它看起来像000123
<phone:LongListSelector ItemsSource="{Binding AllValues}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock x:Name="ValueBlock"
Text="{Binding ValueValue}"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Style="{StaticResource PhoneTextLargeStyle}"/>
...
我知道StringFormat可以做到这一点,但问题是前导零的数量总是不同的,我想从ViewModel绑定它。
...
Text="{Binding ValueValue}, StringFormat='{0:D6'}"
...
如何在StringFormat中绑定D之后的数字?
不能绑定绑定表达式的StringFormat
部分。相反,您可以将另一个属性添加到视图模型中,如"ValueDisplay"。
public string ValueDisplay
{
get { return string.Format("{0:" + ValueFormat + "}", ValueValue); }
}
public string ValueFormat
{
get { return _valueFormat; }
set
{
_valueFormat = value;
RaisePropertyChanged("ValueDisplay");
}
}
private string _valueFormat;
你做不到,但你还是采取了错误的方法。如果您想让视图模型决定如何显示值,请让视图模型处理格式化值的整个过程。例如:
public string Value
{
get
{
return string.Format("{0:D" + this.NumberOfZero + "}", this.value);
}
}
然后将视图直接绑定到格式化的属性。
如果您的属性是一个数值,您也可以直接写:
public string Value
{
get
{
return this.value.ToString("D" + this.NumberOfZero);
}
}