wpf - 有两个控件设置另一个控件的可见性

标签 wpf binding mvvm

对不起,标题,我只是不知道如何用一句话来解释。

所以这是我的目标:我需要在ViewModel中有一个 bool 值,以定义控件(边框)的可见性。

我知道我可以使用BooleanToVisibilityConverter来实现这一点,但是还有更多的事情要做。如果控件不可见,我希望在UI上显示一个按钮。按下该按钮之后,我希望ViewModel中的 bool 值为TRUE,然后希望控件可见并且刚刚按下的按钮可以折叠。一旦该控件可见,我希望该最近可见的控件中的按钮使该控件折叠起来,然后使原始按钮可见。

基本上,有两个按钮:一个使可见(然后折叠自身),另一个是使容器折叠,然后使第一个按钮可见。

我正在尝试使用MVVM完成所有这些操作,因此,如果可以避免在View中隐藏代码,那将是理想的选择!

最佳答案

由于您在 View 模型上使用ICommands,因此应该可以...假设您的命令是“ShowBorderCommand”和“HideBorderCommand”,并且 View 模型上的属性是“ShowBorder”

<ConverterNamespace:BooleanToVisibilityConverter x:Key="BoolToVis"/>
<ConverterNamespace:ReverseBooleanToVisibilityConverter x:Key="BoolToCollapse"/>

<Border Visibility="{Binding ShowBorder, Converter={StaticResource BoolToVis}}">
    <Button Command="{Binding HideBorderCommand}"/>
</Border>

<Button Command="{Binding ShowBorderCommand}" Visbility="{Binding ShowBorder, Converter={StaticResource BoolToCollapse}}"/>

关于wpf - 有两个控件设置另一个控件的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11401900/

相关文章:

c# - 如何在 wpf 后台执行任务,同时能够提供报告并允许取消?

wpf - 将复选框列表绑定(bind)到选中值列表的最简单方法是什么

wpf - 按钮控件模板和 DataTriggers

c# - 将两个复选框绑定(bind)到 MVVM 中的可为 null 的 bool 属性

c# - 如何在 xaml 和 resx 中使用 GNU gettext

c# - 具有特定值的动画 ProgressBar 内容 WPF

c# - 文本框中的字符间距

binding - jQuery 日期选择器在 AJAX 之后不持久

swift - 对 MVVM 中的信号使用react?

c# - WPF ListBox,自动添加 "new element"行