使用Blend的繫結資料來源(1)
阿新 • • 發佈:2019-01-23
前些日子看老外為什麼做SL的時候,可以不用像我們在VS裡面寫一大堆的繫結程式碼,於是自己在家 瞎掰了一個週末,終於發現Blend的一些用法,感覺很不錯!就寫出來留個紀念!萬一
那天專案要用SL,就可以讓美工來學學! 呵呵! (雖然我們經理不看好SL,!!..可能永遠沒機會用)用Blend繫結資料來源
1.新建一個專案
2.把切換到VS裡面去編輯,點選 "Edit in Visual Studio" 3.加入如下程式碼:
namespace BlendBinding { public partial class Page : UserControl { public Page() { // Required to initialize variables InitializeComponent(); } }// end for class public class User:System.ComponentModel.INotifyPropertyChanged { public User():this("null")//加入預設構造 { } public User(string userName) { this.userName = userName; } private string userName = null; public string UserName { get { return userName; } set { userName = value; NotifyPropertyChanged("UserName"); } } public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } #region INotifyPropertyChanged Members public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; #endregion }// end for class public class UserDataProvider { public UserDataProvider() { this.userList = new List<User>(); this.userList.Add(new User("u1")); this.userList.Add(new User("u2")); this.userList.Add(new User("u3")); this.userList.Add(new User("u4")); } private List<User> userList = null; public List<User> UserList { get { return userList; } set { userList = value; } } }// end for class }
後面再解釋為什麼要這麼做.
4.編輯完程式碼轉到Blend下面:
點選 "+CLR Object"
5.把工具欄中的ListBox拖動到介面,再把 UserDataProvider(在Data面版中)拖到ListBox上
完成後的樣子如下:
現在來解釋程式碼: public class User:System.ComponentModel.INotifyPropertyChanged 為什麼裡面有這樣一句,要實現這個介面,呵呵! 因為實現這個接口才可以雙向繫結,那麼不實現這個介面呢? 如果在UserDataProvider不實現的話,在Blend中”+CLR ”的時候就不會出現UserDataProvider(UserList) 再來看Xaml 在<UserControl.Resources/>中多了一句 <BlendBinding:UserDataProvider x:Key="UserDataProviderDS" d:IsDataSource="True"/> 這句就是直接在介面上生成物件的方法,以前老以為Silverlight沒有這個功能, WPF才有 <ListBox Margin="90,77,266,186" ItemsSource="{Binding Mode=OneWay, Path=UserList, Source={StaticResource UserDataProviderDS}}"/> 當然ListBox這個也發生了變化
看不明白就去微軟的msdn上看