[英]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.