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. (嵌套绑定的情况下)