實現效果:
使用 MultiBinding,您能夠將綁定目標屬性綁定到源屬性列表,而後應用邏輯以使用給定的輸入生成值。
數組
關鍵詞:spa
界面代碼:
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; } }
擴展:接口