编辑:我测试了我的其他代码,但它没有用。反正只是一个想法。这是一种有效的方法(尽管我同意 Alex 的观点,即调整视图时 MVVM 中的代码很好)。
在这种情况下,我创建了一个带有两个布尔值的转换器:如果选择了选项卡,以及我们是否可以更改选项卡。如果这两个都设置为 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();
}
}