程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> WPF多源綁定,WPF源綁定

WPF多源綁定,WPF源綁定

編輯:C#入門知識

WPF多源綁定,WPF源綁定


將控件綁定到多個數據源,ListBox綁定到一個集合,其中每一項綁定到集合中對象的兩個屬性,並對綁定進行了格式化。

<ListBox ItemsSource="{StaticResource MyData}" IsSynchronizedWithCurrentItem="True"> 
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock>
                          <TextBlock.Text>
                            <MultiBinding  StringFormat="{}{0} -- Now only {1:C}!">
                             <Binding Path="Description"/>
                              <Binding Path="Price"/>
                            </MultiBinding>
                           </TextBlock.Text>
                    </TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
    </ListBox>

多源綁定的自定義值轉換。下面TextBlock控件綁定到NameListData集合中的一項,當集合中的某個對象被選擇後,該對象的兩個屬性同自定義轉換器轉換為顯示值,對象的兩個屬性分別是FirstName和LastName,通過轉換器,控件顯示完整的姓名。這類似上述的多源綁定的格式化,但轉換器可以接受參數,因此更靈活,此處,可以通過參數控制FirstName和LastName的顯示順序。

<TextBlock Name="textBox1" DataContext="{StaticResource NameListData}">
      <TextBlock.Text>
       <MultiBinding Converter="{StaticResource myNameConverter}" ConverterParameter="FormatNormal">
            <Binding Path="FirstName"/>
            <Binding Path="LastName"/>
        </MultiBinding>
       </TextBlock.Text>
   </TextBlock>

下面是自定義轉換器的實現,該類必須實現接口IMultiValueConverter,其中Convert實現數據源到控件方向的轉換,而ConvertBack相反:

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;
                case "FormatNormal":
                default:
                    name = values[0] + " " + values[1];
                    break;
            }

            return name;
        }

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved