【转载】wpf学习笔记6

WPF感悟(2)——XAML与C#的语法不对称

XAML的语法与C#的语法并不是完全对称的,最明显的就是在设置Binding的时候。

XAML:

<ListBox Name="listBox1" ItemsSource="{Binding ...}" .../>

如何看待ItemsSource="{Binding ...}这个attribute?如果认为是

listBox1.ItemsSource = new Binding(...);,那就错了——数据类型都不匹配。实际上,这句XAML对应的C#应该是:

listBox1.SetBinding(ListBox.ItemsSourceProperty, new Binding(...));

为了让Binding更详细,往往把它拎出来写,成为这样:

  1. Binding b = new Binding("Path"); 
  2. b.Source = XXXX; 
  3. listBox1.SetBinding(ListBox.ItemsSourceProperty, b); 

===========================================================

补记一点东西:

特别是对于DataContext这个东西——

something.DataContext = aDataSource;

something.SetBinding(DataContextProperty, aBinding);

是完全不一样的(当然不一样!只是工作的时候容易搞混)。前者是设定一个对象的DataContext后,这个DataContext就不变了(是哪个对象就不变了,并不是说这个对象内的内容不变);后者是说这个对象的DataContext借助一个Binding来改变。

posted @ 2012-03-29 15:51  火腿骑士  阅读(149)  评论(0编辑  收藏  举报