簡體   English   中英

在Windows Phone中綁定StringFormat

[英]Binding StringFormat in Windows Phone

我為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之后綁定數字?

您不能,但是您還是采取了錯誤的方法。 如果您希望ViewModel決定如何顯示值,則讓ViewModel處理格式化值的整個過程。 例如:

public string Value
{
    get
    {
        return string.Format("{0:D" + this.NumberOfZero + "}", this.value);
    }
}

然后將視圖直接綁定到formatted屬性。

如果您的屬性是數字值,則還可以直接編寫:

public string Value
{
    get
    {
        return this.value.ToString("D" + this.NumberOfZero);
    }
}

您不能綁定綁定表達式的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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM