編集:他のコードをテストしましたが、機能しませんでした。とにかく単なるアイデアでした。これは機能する方法です(ただし、ビューを調整するときにMVVMのコードビハインドは問題ないというアレックスに同意します)。
この場合、タブが選択されている場合とタブを変更できる場合の 2 つのブール値を取るコンバーターを作成しました。これらの両方が false に設定されている場合、false を返してタブを無効にします。いずれかが true に設定されている場合は、タブを有効のままにします。
これがコードです。VM に CanChangeTabs というプロパティがあり、Window.Resources に Converter という MyConverter のインスタンスがあります。
XAML inTabItem:
<TabItem.IsEnabled>
<MultiBinding Converter="{StaticResource Converter}">
<Binding RelativeSource="{RelativeSource Self}" Path="IsSelected" />
<Binding Path="CanChangeTabs" />
</MultiBinding>
</TabItem.IsEnabled>
コンバータ:
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();
}
}