0

我有UserControl's两个

根据我的 ViewModel 中的值,我希望每次都显示另一个 UserControl。

他们应该坐在UserControl包裹着他们的地方。

我怎样才能做到这一点?

这里是包装:

<UserControl>
    <local:UserControl1></local:UserControl1>// I want it to change by a binding
</UserControl>
4

2 回答 2

1

您可以在 ViewModel 中有一个 bool 属性BoolProperty,并基于该值您可以使用以下方式切换其他控件的可见性BooleanToVisibilityConverter-

<UserControl>
    <UserControl.Resources>
       <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    </UserControl.Resources>
    <local:UserControl1 Visibility="{Binding BoolProperty, Converter=
                                {StaticResource BooleanToVisibilityConverter}}"/>
</UserControl>

每当BoolPropertywill 的值是true,您的控制将是visible,如果是,false将是collapsed

于 2013-03-17T08:43:06.030 回答
1

使用 DataTrigger 执行此操作。这是来自记忆,但可能会帮助您:

<ContentControl>
    <ContentControl.Style>
        <Style TargetType="ContentControl">
            <Setter Property="Content">
                <Setter.Value>
                    <local:UserControl1 />
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <DataTrigger Binding="{Binding BoolProperty}" Value="True">
                    <Setter Property="Content">
                        <Setter.Value>
                            <local:UserControl2 />
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ContentControl.Style>
</ContentControl>
于 2013-03-17T08:59:32.717 回答