对不起标题,我只是不知道如何用一句话解释它。
所以这是我的目标:我需要在我的ViewModel中有一个布尔值来定义控件(边框)的可见性。
我知道我可以使用BooleanToVisibilityConverter实现这一点,但还有一点。如果控件不可见,我想在我的UI上显示一个按钮。一旦按下该按钮,我希望我的ViewModel中的布尔值为TRUE,然后我希望控件可见,并且刚按下的按钮被折叠。一旦该控件可见,我想在最近可见的控件中使用一个按钮来使控件折叠,然后使原始按钮可见。
基本上,有两个按钮:1表示可见(然后折叠自己),另一个是折叠其容器,然后使第一个按钮可见。
我正在尝试用MVVM完成所有这些,所以如果我可以避免在我的视图中隐藏代码,这将是理想的!
答案 0 :(得分:1)
我的WPF Converters library有一个BooleanToVisibilityConverter
,允许进行反向转换,并允许使用Hidden
代替Collapsed
:
<con:BooleanToVisibilityConverter x:Key="ReverseBooleanToVisibilityConverter" IsReversed="True"/>
<Button Visibility="{Binding SomeProperty, Converter={StaticResource ReverseBooleanToVisibilityConverter}}"/>
答案 1 :(得分:1)
由于您在viewmodel上使用ICommands,这应该可以...假设您的命令是“ShowBorderCommand”和“HideBorderCommand”,并且您的viewmodel上的属性是“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}}"/>