有時(shí)候默認(rèn)的輸出方式不能滿足我們的需要,比如前面的 OneWay 示例,可能我們需要的是在 TextBox 中顯示“開始加載“、”加載一半了“、”很快就加載完了“以及”已經(jīng)加載好“等,甚至還可以讓其能夠轉(zhuǎn)換成英文哦。
那么首先新建一個(gè)類 SliderValueConverter.cs,然后實(shí)現(xiàn) IValueConverter 接口。然后按自己的需要寫它的Converter 方法即可。
public class SliderNotifyAndConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
string valueTextBlock;
string parameterValue = parameter.ToString();
double valueSlider = (double)value;
if (valueSlider > 0&&valueSlider<=5)
{
if (parameterValue == "zh-cn")
valueTextBlock = "開始加載";
else
valueTextBlock = "Starts to load";
}
else if (valueSlider >= 45 && valueSlider <= 55)
{
if (parameterValue == "zh-cn")
valueTextBlock = "加載一半了";
else
valueTextBlock = "loaded half";
}
else if (valueSlider >= 90&&valueSlider<100)
{
if (parameterValue == "zh-cn")
valueTextBlock = " 很快就加載完了";
else
valueTextBlock = "finished loading very quickly";
}
else if (valueSlider == 100)
{
if (parameterValue == "zh-cn")
valueTextBlock = " 已經(jīng)加載好";
else
valueTextBlock = "loaded";
}
else
{
if (parameterValue == "zh-cn")
valueTextBlock = "加載中";
else
valueTextBlock = "Loading";
}
return valueTextBlock;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
最后還需要在 XAML 中添加如下代碼哦,值轉(zhuǎn)換器 Converter 所使用的靜態(tài)資源已經(jīng)在 <Page.Resource/>
中定義了。另外 ConverterParameter 則是對應(yīng)了后臺代碼中的 parameterValue 參數(shù),通過這個(gè)屬性則可以調(diào)用不同的輸出,很有用哦。
<Page.Resources>
<local:SliderNotifyAndConverter x:Key="SliderNotifyAndConverterResources"/>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel Name="stackPanel" Width="450" Orientation="Vertical"
HorizontalAlignment="Center" VerticalAlignment="Center">
<Slider Name="slider1" Minimum="0" Maximum="100"
Value="95"/>
<TextBlock FontSize="30"
Text="{Binding ElementName=slider1, Path=Value,
Converter={StaticResource SliderNotifyAndConverterResources},
ConverterParameter='zh-cn'}"/>
<TextBlock FontSize="30"
Text="{Binding ElementName=slider1, Path=Value,
Converter={StaticResource SliderNotifyAndConverterResources},
ConverterParameter='en-us'}"/>
</StackPanel>
</Grid>
以下是 Slider 的 Value 取不同值時(shí) TextBlock 的不同顯示。
這里僅僅是一個(gè)比較簡單的示例,在項(xiàng)目產(chǎn)品中往往有數(shù)據(jù)綁定的地方都會有值轉(zhuǎn)換器的,就像 C++ 中經(jīng)常重載 ostream 一樣。
更多建議: