Это звучит как очень странное требование, пожалуйста, поправьте меня, если я ошибаюсь, но я подозреваю, что то, как вы сформулировали это, на самом деле не то, что вы пытаетесь выполнить. Обычный способ управления вкладками в 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}" />
Результат:
Поскольку CurrentTab
отслеживает текущую выбранную вкладку, код модели представления можно легко проверить в любое время, чтобы увидеть, выбрал ли пользователь в данный момент, так что нет необходимости возиться с самими привязками. Поскольку привязка двусторонняя, модель представления также может контролировать, какая вкладка активна в данный момент, что особенно удобно при добавлении навигационных помощников в ваше приложение.
Если вы действительно хотите удалить привязки, достаточно просто добавить дополнительное поле данных в модель представления, а затем установить / очистить его в установщике CurrentTab
.