将两个元素的可见性绑定到一个属性

sea*_*717 4 wpf

我有两个菜单项元素 - "Undelete"和"Delete",它们具有互补的可见性:当显示一个时,另一个被隐藏.

在ViewModel的代码中,我有一个依赖属性FilesSelectedCanBeUndeleted,定义如下:

private bool _filesSelectedCanBeUndeleted;
public bool FilesSelectedCanBeUndeleted
{
    get
    {
        return _filesSelectedCanBeUndeleted;
    }
    set
    {
        _filesSelectedCanBeUndeleted = value;
        OnPropertyChanged("FilesSelectedCanBeUndeleted");
    }
}
Run Code Online (Sandbox Code Playgroud)

Undelete按钮的XAML如下所示:

<MenuItem Header="Undelete" Command="{Binding UndeleteCommand }" 
Visibility="{Binding Path=FilesSelectedCanBeUndeleted, 
Converter={StaticResource BoolToVisConverter}}" >
Run Code Online (Sandbox Code Playgroud)

如您所见,Undelete的Visibility绑定到FilesSelectedCanBeUndeleted属性(在BooleanToVisibilityConveter的帮助下).

现在我的问题是,如何编写XAML以将Delete按钮的Visibility绑定到FilesSelectedCanBeUndeleted属性的"NOT"值?

谢谢,

Cod*_*ked 5

以下是自定义IValueConverter的示例,它允许您反转可见性逻辑.基本上,当view-model属性为true时,一个MenuItem将可见,而另一个将被折叠.

所以你需要定义转换器的两个实例,如下所示:

<local:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<local:BooleanToVisibilityConverter x:Key="ReversedBooleanToVisibilityConverter" IsReversed="true" />
Run Code Online (Sandbox Code Playgroud)