读书人

wpf 小弟我在vm里有个List属性.如何绑

发布时间: 2013-09-17 13:35:59 作者: rapoo

wpf 我在vm里有个List属性.怎么绑定?
vm里有个List属性Lc2

                              
没有大师进来吗


没有大师进来吗


我来拯救你吧
呵呵
是这样的 你的问题在于
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>


<ListBox ItemsSource="{Binding Lc2}" Name="listBox3">
</ListBox>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>

这段代码是重写了ItemTemplate
而里面的数据对应的是你Binding Lc1的数据项
比如你Lc1是这样定义的List<person> 那么你一条数据对应的是一个person对象
也就是说你下面这句<ListBox ItemsSource="{Binding Lc2}" Name="listBox3">
里面的bing Lc2必须你person对象中的属性
这样才能绑定 不信你试试
虽然没有写代码测试 但是原理是这样的
不懂的可以继续发问

[解决办法]
<ListBox ItemsSource="{Binding Lc2}" Name="listBox3">这句是假定数据上下文DataContext还是顶级的,实际上,你在ItemTemplate里定义的绑定表达式默认是指向这个Item本身的对象,当然绑定不上了。

建议你用RelativeSource来实现绑定父级DataContext中的属性。
[解决办法]
LC1的对象下有LC2才能绑定.. 而且绑定的是LC1对象下的LC2.. 如果LC1和LC2是同类下的对象则无法绑定..
ItemsSource = "{Binding xxx}"的时候DataContext已经变成绑定的xxx. (嵌套绑定的情况下)

读书人网 >C#

热点推荐