如何解决将两个元素的可见性绑定到一个属性
| 我有两个菜单项元素-\“ Undelete \”和\“ Delete \”具有互补的可见性:显示一个时,另一个隐藏。 在viewmodel的代码中,我有一个依赖项属性FilesSelectedCanBeUndeleted定义如下:private bool _filesSelectedCanBeUndeleted;
public bool FilesSelectedCanBeUndeleted
{
get
{
return _filesSelectedCanBeUndeleted;
}
set
{
_filesSelectedCanBeUndeleted = value;
OnPropertyChanged(\"FilesSelectedCanBeUndeleted\");
}
}
取消删除按钮的XAML如下所示:
<MenuItem Header=\"Undelete\" Command=\"{Binding UndeleteCommand }\"
Visibility=\"{Binding Path=FilesSelectedCanBeUndeleted,Converter={StaticResource BoolToVisConverter}}\" >
如您所见,取消删除的可见性已绑定到FilesSelectedCanBeUndeleted
属性(借助于BooleanToVisibilityConveter)。
现在我的问题是,如何编写XAML来将Delete按钮的可见性绑定到FilesSelectedCanBeUndeleted属性的\“ NOT \”值?
谢谢,解决方法
这是一个自定义IValueConverter的示例,该示例使您可以反转可见性逻辑。基本上,当您的view-model属性为true时,一个MenuItem将可见,而另一个折叠。
因此,您需要像这样定义转换器的两个实例:
<local:BooleanToVisibilityConverter x:Key=\"BooleanToVisibilityConverter\" />
<local:BooleanToVisibilityConverter x:Key=\"ReversedBooleanToVisibilityConverter\" IsReversed=\"true\" />
,您可以将datatrigger应用于您的menuitem,以避免在viemodel中出现其他这样的属性-
<MenuItem Header=\"Delete\"
Command=\"{Binding DeleteCommand }\">
<MenuItem.Style>
<Style TargetType=\"{x:Type MenuItem}\">
<Setter Property=\"Visibility\" Value=\"Visible\" />
<Style.Triggers>
<DataTrigger Binding=\"{Binding FilesSelectedCanBeUndeleted}\" Value=\"False\">
<Setter Property=\"Visibility\"
Value=\"Collapsed\" />
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
,在ViewModel上创建新属性,然后仅取反\'FilesSelectedCanBeUndeleted \',然后将其绑定。,我前一阵子做了一个简单的否定...
private bool _filesSelectedCanBeUndeleted;
public bool FilesSelectedCanBeUndeleted{
get{
return _filesSelectedCanBeUndeleted;
}
set{
_filesSelectedCanBeUndeleted = value;
OnPropertyChanged(\"FilesSelectedCanBeUndeleted\");
// You have also to notify that the second Prop will change
OnPropertyChanged(\"FilesSelectedCanBeDeleted\");
}}
public bool FilesSelectedCanBeDeleted{
get{
return !FilesSelectedCanBeUndeleted;
}
}
Xaml可能看起来像这样……
<MenuItem Header=\"Delete\"
Command=\"{Binding DeleteCommand }\"
Visibility=\"{Binding Path=FilesSelectedCanBeDeleted,Converter={StaticResource BoolToVisConverter}}\" >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。