TabItem нажал - PullRequest
       48

TabItem нажал

0 голосов
/ 22 мая 2019

У меня проблема, у меня есть форма wpf с tabcontrol, внутри tabcontrol есть несколько tabitems. Кстати, я делаю дизайн mvvm patten с mvvmlight. Хорошо, теперь я хочу передать некоторые данные из модели представления, которая привязана к первому элементу табуляции, во вторую модель представления, которая привязана ко второму элементу табуляции, но только при щелчке по второму элементу табуляции. Заранее спасибо

1 Ответ

1 голос
/ 22 мая 2019

Это звучит как очень странное требование, пожалуйста, поправьте меня, если я ошибаюсь, но я подозреваю, что то, как вы сформулировали это, на самом деле не то, что вы пытаетесь выполнить. Обычный способ управления вкладками в MVVM - начать с создания модели представления для панелей вкладок:

public class TabItemViewModel
{
    public string Header { get; set; }

    // fields for the actual panel items go here

    public override string ToString() => this.Header;
}

Затем в вашей модели представления вы создаете наблюдаемую коллекцию из них и свойство для отслеживания, какая вкладка выбрана в данный момент:

    public ObservableCollection<TabItemViewModel> MyItems { get; } = new ObservableCollection<TabItemViewModel>
    {
        new TabItemViewModel { Header = "Tab Page 1" },
        new TabItemViewModel { Header = "Tab Page 2" },
        new TabItemViewModel { Header = "Tab Page 3" }
    };

    private TabItemViewModel _CurrentTab;
    public TabItemViewModel CurrentTab
    {
        get { return this._CurrentTab; }
        set
        {
            if (this._CurrentTab != value)
            {
                this._CurrentTab = value;
                RaisePropertyChanged(() => this.CurrentTab);
            }
        }
    }
}

Затем ваш XAML связывается с коллекцией и свойством:

<TabControl ItemsSource="{Binding MyItems}" SelectedItem="{Binding CurrentTab}" />

Результат:

enter image description here

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

Если вы действительно хотите удалить привязки, достаточно просто добавить дополнительное поле данных в модель представления, а затем установить / очистить его в установщике CurrentTab.

...