1

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

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

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

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

我正在尝试使用 MVVM 来完成所有这些工作,所以如果我可以避免在我的视图中隐藏代码,那将是理想的!

4

2 回答 2

1

我的WPF 转换器库有一个BooleanToVisibilityConverter允许反向转换,以及允许使用的Hidden代替Collapsed

<con:BooleanToVisibilityConverter x:Key="ReverseBooleanToVisibilityConverter" IsReversed="True"/>
<Button Visibility="{Binding SomeProperty, Converter={StaticResource ReverseBooleanToVisibilityConverter}}"/>
于 2012-07-09T19:51:24.690 回答
1

由于您在视图模型上使用 ICommands,这应该可以工作...假设您的命令是“ShowBorderCommand”和“HideBorderCommand”,并且您的视图模型上的属性是“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}}"/>
于 2012-07-09T20:11:12.430 回答