這裏有三個選項。
第一個選項:修改您的視圖模型以顯示格式化的字符串並綁定到該模型。
public string CountFormatted {
get {
return String.Format(AppResources.TextResource, Count);
}
}
<TextBlock Text="{Binding Path=CountFormatted}" />
第二個選項:做一個轉換器MyCountConverter
public class MyCountConverter: IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
if (value == null)
return value;
return String.Format(culture, AppResources.TextResource, value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
throw new NotImplementedException();
}
}
<phone:PhoneApplicationPage.Resources>
<local:MyCountConverter x:Key="MyCountConverter"/>
</phone:PhoneApplicationPage.Resources>
...
<TextBlock Text="{Binding Count, Converter={StaticResource MyCountConverter}}"/>
第三選項:使用綁定,能夠轉換參數,這樣就可以使一個普通的StringFormat轉換器哪裏你可以實際綁定轉換器參數。這在windows phone中並不支持,但仍然可行。請檢查this關於如何完成的鏈接。
但是,除非您使用資源來支持多種語言,否則將格式作爲普通字符串傳遞給轉換器會更容易。
<TextBlock Text="{Binding Count,
Converter={StaticResource StringFormatConverter},
ConverterParameter='Text: {0}'}" />
在這種情況下,您必須製作一個使用參數的StringFormatConverter
轉換器。
編輯:
關於第三個選項,你可以使用IMultiValueConverter
在上面的鏈接,以達到你想要的東西。您可以添加以下轉換器:
public class StringFormatConverter: IMultiValueConverter {
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
var param = values[0].ToString();
var format = values[1].ToString();
return String.Format(culture, format, param);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) {
throw new NotImplementedException();
}
}
<TextBlock Text="{Binding ElementName=MultiBinder, Path=Output}" />
<binding:MultiBinding x:Name="MultiBinder" Converter="{StaticResource StringFormatConverter}"
NumberOfInputs="2"
Input1="{Binding Path=Count, Mode=TwoWay}"
Input2="{Binding Path=LocalizedResources.TextResource, Source={StaticResource LocalizedStrings}}" />
我不知道這是否是值得的,雖然。
非常感謝!選項#3是否可以將ConverterParameter綁定到資源文件中的資源?我試過了,失敗了...... –
是的,請參閱我的編輯。 –