我有三个视图模型: AccountListViewModel(具有accountviewmodels和selectedaccount属性的集合)
public ObservableCollection<AccountViewModel> AccountList
public AccountViewModel SelectedAccount
AccountViewModel(具有transactionviewmodel的集合)
public ObservableCollection<TransactionViewModel> Transactions
和TransactionViewModel。
我将主窗口的datacontext设置为AccountListViewModel,并且我在主窗口中设置了两个Usercontrols(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 usercontrol的项目源
<ListView x:Name="AccountList" ItemsSource="{Binding Source={StaticResource GroupedAccounts}}" SelectedItem="{Binding SelectedAccount}" >
和TransactionListView用户控件的itemssource
<ListView ItemsSource="{Binding Transactions}" >
AccountList正确显示但是当我选择一个帐户时,虽然逻辑是正确的但我没有显示任何交易。
保存TransactionListView的contentcontrol的Content属性设置为SelectedAccount,TransactionListView itemsource是Transactions集合,因此每当我点击一个帐户时,该帐户的事务集合应该显示在第二个contentcontrol中。
答案 0 :(得分:0)
尝试使用SelectedValue而不是SelectedItem,看看是否有效。您可能还需要将模式更改为双向并更新源触发器。
<DataGrid ItemsSource="{Binding Source}"
SelectedValue="{Binding Selected}"
Margin="10">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Test Checked" Binding="{Binding S}"/>
</DataGrid.Columns>
</DataGrid>
这是数据网格的一个示例,但适用相同的概念。