值轉(zhuǎn)換器

2018-08-12 21:55 更新

值轉(zhuǎn)換器

有時(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 一樣。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號