我有一个简单的ListView,其中有另一个ListView。我似乎无法将内部列表视图与我的实际List<>绑定,它只显示为空。
我的代码:
public CollectionViewSource CVSmain {get;set;} //Which is actually a List<MyClassViewModel>, my main ListView bounds to this correctly
public class MyClassViewModel{
public class MySubClass{
public string Name{return _name;}
}
List<MySubClass> MyList = new List<MySubClass>();
public string MyText{get;set;}
}
我的XAML:
<ListView DataContext="{Binding CVSmain}" ItemsSource="{Binding}" >
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding MyText}" Header="My Text"/>
<GridViewColumn Header="My List">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding MyList}">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<ItemsPresenter/>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/> </GridView>
</ListView.View>
</ListView>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
如果不是我的第二个ListView,我只是放了一个带有“{Binding Name}”的Textblock,它就可以了。不知道如何绑定这个内部ListView,任何想法?
谢谢,
答案 0 :(得分:1)
你有三个嵌套控件:外部ListView,中间的ItemsControl,然后是内部ListView。我认为ItemsControl是不必要的。尝试替换
<ItemsControl ItemsSource="{Binding MyList}">
...
</ItemsControl>
通过
<ListView ItemsSource="{Binding MyList}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/>
</GridView>
</ListView.View>
</ListView>
此外,改变
List<MySubClass> MyList = new List<MySubClass>();
到
public List<MySubClass> MyList { get; set; }
因为您只能绑定到公共属性,而不能绑定到私有字段。
答案 1 :(得分:0)
请注意MyText
是公共财产,MyList
需要是公共财产。