簡體   English   中英

綁定StringFormat

[英]Binding StringFormat

我有一組文本塊,我將要展示,我需要以不同的方式顯示每個文本塊的文本。 我目前正在標簽屬性中保存格式字符串,我需要以這種格式顯示文本。 如何綁定StringFormat部分?

類似下面的部分:

<TextBlock Tag="{Binding MyFormatString}" Text="{Binding MyProperty, StringFormat='{}{0:MyTag}'}" />

由於BindingBase.StringFormat不是依賴屬性,我認為你不能綁定它。 如果格式化字符串不同,我擔心你將不得不求助於這樣的事情

<TextBlock Text="{Binding MyFormattedProperty}" />

並在視圖模型中進行格式化。 或者,您可以使用MultiBinding和轉換器(示例代碼未經測試):

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myStringFormatter}">
            <Binding Path="MyProperty" />
            <Binding Path="MyFormatString" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

public class StringFormatter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return string.Format((string)values[1], values[0]);
    }
    ...
}
<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0},{1}">
            <Binding Path="MyProperty" />
            <Binding Path="MyFormatString" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

字符串格式是一個顯示設置,因此應該靠近UI層,您可以在Xaml中聲明它或在ViewModel上具有格式化的字符串屬性,並在Get of the properties中執行格式化並將TextBlock綁定到它ViewModel屬性。 它將從原始數據源中獲取其數據。

暫無
暫無

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

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