10

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

4

3 回答 3

19

使用切换按钮并使用以下方式绑定您的可见UserControlBooleanToVisibilityConverter

定义资源:

<BooleanToVisibilityConverter x:Key="BoolToVisibility" />

切换按钮:

<ToggleButton x:Name="VisibilityToggle>
    <Image Source="..." />
</ToggleButton>

用户控制:

<MyControl Visibility="{Binding IsChecked, ElementName=VisibilityToggle, Converter={StaticResource BoolToVisibility}}" />
于 2013-10-14T09:33:10.453 回答
5

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

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

...

<MyUserControl Visibility="{Binding IsMyUserControlVisible, Converter={StaticResource visibilityConverter}}" />

视图模型:

private bool _isMyUserControlVisible;
public bool IsMyUserControlVisible
{
    get { return _isMyUserControlVisible; }
    set
    {
        _isMyUserControlVisible = value;
        OnPropertyChanged("IsMyUserControlVisible");
    }
}
于 2013-10-14T09:30:10.133 回答
1

假设您的 ViewModel 中有一个布尔属性,用于确定是否显示控件

public bool DisplayControl { get; set; }

StackPanel使用 a绑定您的可见性BooleanToVisibiltyConverter

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

和你的控制:

<StackPanel Visibility="{Binding DisplayControl, Converter={StaticResource visibilityConverter}}"/>
于 2013-10-14T09:32:14.257 回答