我有三个视图模型:AccountListViewModel(具有一组accountviewmodel和一个选定的account属性)
public ObservableCollection<AccountViewModel> AccountList
public AccountViewModel SelectedAccount
AccountViewModel(具有transactionviewmodel的集合)
public ObservableCollection<TransactionViewModel> Transactions
和TransactionViewModel。
我将主窗口的数据上下文设置为AccountListViewModel,并且我在主窗口中设置了两个用户控件(AccountListView和TransactionListView)作为内容控件。
<DataTemplate x:Key="AccountListTemplate" >
<views:AccountListView />
</DataTemplate>
<DataTemplate x:Key="TransactionListTemplate" >
<views:TransactionListView />
</DataTemplate>
<ContentControl Content="{Binding}" ContentTemplate=" {StaticResource AccountListTemplate}" />
<ContentControl Grid.Row="1" Content="{Binding SelectedAccount}" ContentTemplate="{StaticResource TransactionListTemplate}" />
这是AccountListView用户控件的项目源
<ListView x:Name="AccountList" ItemsSource="{Binding Source={StaticResource GroupedAccounts}}" SelectedItem="{Binding SelectedAccount}" >
和TransactionListView用户控件的项目源
<ListView ItemsSource="{Binding Transactions}" >
AccountList显示正确,但当我选择一个帐户时,尽管逻辑正确,但不会显示任何交易。
持有TransactionListView的内容控件的Content属性设置为SelectedAccount,而TransactionListView项源是Transactions集合,因此每当我单击某个帐户时,该帐户的事务集合都应显示在第二个内容控件中。
尝试使用SelectedValue而不是SelectedItem,看看这是否有效。您可能还需要将模式更改为双向,并更新源触发器。
<DataGrid ItemsSource="{Binding Source}"
SelectedValue="{Binding Selected}"
Margin="10">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Test Checked" Binding="{Binding S}"/>
</DataGrid.Columns>
</DataGrid>
这是一个数据网格的例子,但同样的概念也适用。