WPF MVVM Основной подробный вид с сеткой данных и TabControl - PullRequest
1 голос
/ 14 июля 2011

Я пытаюсь реализовать подробное представление мастера в WPF MVVM.

В моей модели просмотра у меня есть наблюдаемая коллекция "Причин". У каждой причины есть наблюдаемая коллекция «решений».

Я связал редактируемый Datagrid с причинами, и он работает нормально. Но когда пользователь выбирает строку в DataGrid, я хочу разрешить пользователю видеть связанные с ним решения в TabControl.

Как мне это сделать? Должен ли я создать свойство CurrentCause в Viewmodel и связать его с SelectedItem. В TabControl можно привязать к CurrentCause.Solutions.

Это будет оптимальный подход? Пожалуйста, порекомендуйте. Спасибо!!

Ответы [ 3 ]

2 голосов
/ 14 июля 2011

Вы можете установить IsSynchronizedWithCurrentItem в True и сделать что-то вроде this .

2 голосов
/ 14 июля 2011

Вы можете связать ItemsSource TabControl как SelectedItem DataGrid, используя привязку элемента.

<TabControl ItemsSource="{Binding ElementName=myDataGrid, Path=SelectedItem.Solutions}">
1 голос
/ 14 июля 2011

Я бы связал вашу DataGrid со списком Причин, SelectedItem to CurrentCause в вашей Модели и TabControl to Solutions. Тогда у вас все красиво привязано к вашему MVVM.

private Cause _currentCause;
public Cause CurrentCause
{
    get { return _currentCause; }
    set
    {
        if (_currentCause == value) return;
            CurrentSolution = _currentCause.Solutions;  //However you do this...
        _currentCause = value;

        RaisePropertyChanged("CurrentCause");
    }
}

private ObservableCollection<Cause> _causes;
public ObservableCollection<Cause> Causes
{
    get { return _causes; }
    set
    {
        _causes = value;
        RaisePropertyChanged("Causes");
    }
}
private ObservableCollection<Solution> _solutions;
public ObservableCollection<Solution> Solutions
{
    get { return _solutions; }
    set
    {
        _solutions = value;
        RaisePropertyChanged("Companies");
    }
}



<dg:DataGrid ItemsSource="{Binding Causes}" SelectedItem="{Binding CurrentCause}"...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...