开门见山。我正在使用 MVVM 编写一个程序,并且制作了如下视图:
类结构:
class Company
{
int CompanyID
string Name
List<Material> MaterialList
}
class Material
{
int ID
string Name
string Description
}
这是我的视图的 XAML 代码(删除了大部分不相关的内容以使其更具可读性):
<ListView x:Name="_companies" ItemsSource="{Binding ElementName=_this, Path=ItemsSource}" SelectedItem="{Binding ElementName=_this, Path=SelectedItem}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding CompanyID}" />
<GridViewColumn Header="Company Name" DisplayMemberBinding="{Binding CompanyName}" />
</GridView>
...
<ListView x:Name="_materials" >
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding ElementName=_companies, Path=SelectedItem.MaterialID}"/>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding ElementName=_companies, Path=SelectedItem.Name"/>
</GridView>
</ListView.View>
</ListView>
<TextBox x:name="_description" Text="{Binding Description}" IsReadOnly="True" />
</StackPanel>
以及我的 MainView 的一部分:
<Window.DataContext>
<viewModels:CompanyListViewModel />
</Window.DataContext>
<Grid>
<view:CompanyListView ItemsSource="{Binding Companies}" />
公司是一个列表Company
包含的对象Name
, ID
and MaterialList
。公司列表显示在_companies
ListView(上面的代码)。
现在,从列表中选择一家公司后,我想显示分配的公司MaterialList
in the _materials
列表显示。
选择材料后_materials
我想在中显示其描述_description
TextBox
我怎么做?我找到了一个解释这个概念的类似线程 https://stackoverflow.com/questions/15774560/wp8-xaml-binding-list-with-another-list-inside但就我而言我仍然做不到。我可以绑定到 SelectedItem 属性之一吗?