2015-03-21 3 views
0

У меня есть три ViewModels: AccountListViewModel (имеет коллекцию accountviewmodels и свойство selectedaccount)МОФ мастер подробно ListViews связывания не работает

public ObservableCollection<AccountViewModel> AccountList 
public AccountViewModel SelectedAccount 

AccountViewModel (имеет коллекцию transactionviewmodel)

public ObservableCollection<TransactionViewModel> Transactions 

и TransactionViewModel.

Я установил datacontext основного окна в AccountListViewModel, и у меня есть два Usercontrols (AccountListView и TransactionListView), которые я установил в mainwindow в качестве контроля содержимого.

<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}" /> 

Это ItemsSource из AccountListView UserControl

<ListView x:Name="AccountList" ItemsSource="{Binding Source={StaticResource GroupedAccounts}}" SelectedItem="{Binding SelectedAccount}" > 

и ItemsSource для TransactionListView UserControl

<ListView ItemsSource="{Binding Transactions}" > 

AccountList правильно отображая но при выборе счета операций не являются хотя логика правильная, я думаю.

Свойство Content contentcontrol, которое содержит TransactionListView, имеет значение SelectedAccount, а источник данных TransactionListView - это коллекция транзакций, поэтому всякий раз, когда я нажимаю на учетную запись, коллекция транзакций этой учетной записи должна отображаться во втором контроле контента.

ответ

0

Попробуйте использовать SelectedValue вместо SelectedItem и посмотрите, работает ли это. Вам также может потребоваться изменить режим на двухсторонний и обновить триггер источника.

<DataGrid ItemsSource="{Binding Source}" 
       SelectedValue="{Binding Selected}" 
       Margin="10"> 
     <DataGrid.Columns> 
      <DataGridCheckBoxColumn Header="Test Checked" Binding="{Binding S}"/> 
     </DataGrid.Columns> 
    </DataGrid> 

Это пример сетки данных, но применяются те же концепции.

+0

Я пробовал, но он не работает. – Cristian

+0

Кажется, что вы теряете что-то, имея столько моделей взглядов. Почему бы просто не иметь классы для хранения ваших транзакций и данных учетной записи и иметь ли ваша основная модель представления привязка для доступа к вашим базовым классам? –

+0

Я думаю, что я понимаю вашу ситуацию больше. Я также попытался создать тестовое приложение для репликации ситуации, и мне не удалось обновить список транзакций. Я сделал это по-другому, но с той же проблемой. Я видел выбранное событие с поднятым значением, но не смог вызвать обновление транзакции. Мне, возможно, придется посмотреть дальше. Извините, я не мог больше помочь. –

Смежные вопросы