如何在wpf mvvm中隐藏/显示堆栈面板

SNS*_*SNS 7 wpf xaml mvvm

在MVVM场景中,我想基于超链接点击或图像点击显示/隐藏用户控件.如何在XAML中实现这一目标?

Mar*_*arc 16

使用切换按钮并绑定您UserControl使用的可见性BooleanToVisibilityConverter:

定义资源:

<BooleanToVisibilityConverter x:Key="BoolToVisibility" />
Run Code Online (Sandbox Code Playgroud)

切换按钮:

<ToggleButton x:Name="VisibilityToggle>
    <Image Source="..." />
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)

用户控件:

<MyControl Visibility="{Binding IsChecked, ElementName=VisibilityToggle, Converter={StaticResource BoolToVisibility}}" />
Run Code Online (Sandbox Code Playgroud)


Tho*_*que 5

将该Visibility属性绑定到 ViewModel 的 bool 属性,使用BooleanToVisibilityConverter

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="visibilityConverter" />
</Window.Resources>

...

<MyUserControl Visibility="{Binding IsMyUserControlVisible, Converter={StaticResource visibilityConverter}}" />
Run Code Online (Sandbox Code Playgroud)

视图模型:

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