WPF:數據綁定--多綁定及轉換器

MultiBinding多綁定的數據綁定及轉換器

實現效果:
使用 MultiBinding,您能夠將綁定目標屬性綁定到源屬性列表,而後應用邏輯以使用給定的輸入生成值。
clipboard.png數組

clipboard.png

關鍵詞:spa

  1. MultiBinding+Converter
  2. ConverterParameter
  3. IMultiValueConverter

界面代碼:
ListBox數據模板,其中能夠在 MultiBinding 對象中指定多個綁定。 經過轉換器使用 MultiBinding 對象時,該對象將根據這些綁定的值生成綁定目標的最終值。code

<DataTemplate x:Key="NameItemTemplate">
    <TextBlock>
        <TextBlock.Text>
            <MultiBinding Converter="{StaticResource MyNameConverter}">
                <Binding Path="FirstName"/>
                <Binding Path="LastName"/>
            </MultiBinding>
        </TextBlock.Text>
    </TextBlock>
</DataTemplate>

最下的TextBlock:orm

<TextBlock Name="textBox2" DataContext="{StaticResource NameListData}">
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource MyNameConverter}"
              ConverterParameter="FormatLastFirst">
            <Binding Path="FirstName"/>
            <Binding Path="LastName"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

數據轉換代碼NameConverter:
NameConverter 實現 IMultiValueConverter 接口。 NameConverter 從各個綁定獲取值並將其存儲在值對象數組中。 Binding 元素在 MultiBinding 元素下的顯示順序與它們的值在數組中的存儲順序相同。 Converter 方法的參數引用 ConverterParameter 特性的值,該方法對參數執行轉換以肯定如何設置名稱格式。對象

public class NameConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        string name;

        switch ((string) parameter)
        {
            case "FormatLastFirst":
                name = values[1] + ", " + values[0];
                break;
            default:
                name = values[0] + " " + values[1];
                break;
        }

        return name;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        var splitValues = ((string) value).Split(' ');
        return splitValues;
    }
}

擴展:接口

  1. Mode 和 UpdateSourceTrigger 屬性的值決定了 MultiBinding 的功能,並用做集合中全部綁定的默認值,除非某個綁定重寫這些屬性。 例如,若是 MultiBinding 對象的 Mode 屬性設置爲 TwoWay,則集合中的全部綁定都被視爲 TwoWay,除非您對其中一個綁定顯式設置不一樣的 Mode 值。
  2. MultiBinding.ConverterParameter 屬性:轉換器須要的類型值,能夠是對象元素也能夠是字符串,具體取決於使用的屬性類型和轉換器的實現的定義和 XAML 功能。 轉換器經過其 Convert 和 ConvertBack 實現所定義的 parameter 參數來獲取該類型。
  3. IMultiValueConverter :要將值轉換器與 MultiBinding 關聯,請建立一個實現 IMultiValueConverter 接口的類,而後實現 Convert 和 ConvertBack 方法。
相關文章
相關標籤/搜索