我创建了一个带有列表视图绑定的应用程序,其中数据正在类库中处理,因此数据模型驻留在类库中。作为扩展,我想使用AvalonDock来管理我的窗口。举个例子,它们绑定数据的方式是通过数据模板,它通过视图模型中的数据模板传递。所以我删除了他们的文本框并放入了我的listview,但我无法再使用listview项源从c#代码访问列表视图,因为我已将它放在数据模板中。因此,在构造函数中,在fest视图模型中,我创建了一个列表类型的新实例并分配了值,但没有数据通过视图。我逐步浏览festviewmodel,我在ViewModel中创建的列表中的数据是视图中没有数据。出于好奇,我创建了一个文本块并在构造函数中设置了值,它显示在视图上,但是我从List到Listview的数据是空的。
<localController:PanesTemplateSelector.festViewTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<ListView x:Name="lvfest" >
<ListView.View>
<GridView>
<GridViewColumn Width="100" DisplayMemberBinding="{Binding Fest.id}" >
<GridViewColumn.Header>
<GridViewColumnHeader Tag="ID" Click="lvfestColumnHeader_Click">ID</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="100" DisplayMemberBinding="{Binding Fest.format}" >
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Format" Click="lvfestColumnHeader_Click">Format</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="100" DisplayMemberBinding="{Binding Fest.modified}" >
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Date" Click="lvfestColumnHeader_Click">Date</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</DataTemplate>
</localController:PanesTemplateSelector.festViewTemplate>
public class festViewModel
{
public festViewModel() : base("fest Stats")
{
Workspace.This.ActiveDocumentChanged += new EventHandler(OnActiveDocumentChanged);
Fest = new List<festItem>();
Fest = MainWindow._fest.festData.fest_Items;
}
public List<festItem> Fest;
}
答案 0 :(得分:2)
您可以将ItemsSource
的{{1}}属性绑定到其ListView
的属性。因此,如果DataContext
是DataContext
实例,您可以像这样绑定它:
festViewModel
...前提是<ListView x:Name="lvfest" ItemsSource="{Binding Fest}">
...
是Fest
类的公开属性:
festViewModel
您无法绑定到字段。