首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-09-17 
wpf 我在vm里有个List属性.怎么绑定?vm里有个List属性Lc2没有大师进来吗没有大师进来吗我来拯救你吧呵呵是

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

热点排行