РЕДАКТИРОВАТЬ: Я проверил мой другой код, и он не работал.В любом случае это была просто идея.Вот метод, который работает (хотя я согласен с Алексом, что код в MVVM хорош при настройке View).
В этом случае я создал конвертер, который принимает два логических значения: если выбрана вкладка и можно ли менять вкладки.Если для обоих из них установлено значение false, мы возвращаем false, чтобы отключить вкладку.Если для любого из них установлено значение true, мы оставляем вкладку включенной.
Вот код.В моей виртуальной машине есть свойство CanChangeTabs и экземпляр MyConverter в Window.Resources с именем Converter.
XAML inTabItem:
<TabItem.IsEnabled>
<MultiBinding Converter="{StaticResource Converter}">
<Binding RelativeSource="{RelativeSource Self}" Path="IsSelected" />
<Binding Path="CanChangeTabs" />
</MultiBinding>
</TabItem.IsEnabled>
Converter:
public class MyConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
foreach (object value in values)
{
if ((bool)value)
{
return true;
}
}
return false;
}
public object[] ConvertBack(object values, Type[] targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}