通过绑定更改用户控件

时间:2013-03-17 08:37:34

标签: wpf binding user-controls

我有两个UserControl's

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

他们应该坐在包裹他们的UserControl

我该怎么做?

这里是包装器:

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

2 个答案:

答案 0 :(得分:1)

您可以在ViewModel中拥有bool属性BoolProperty,并根据该值,您可以使用BooleanToVisibilityConverter -

切换其他控件的可见性
<UserControl>
    <UserControl.Resources>
       <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    </UserControl.Resources>
    <local:UserControl1 Visibility="{Binding BoolProperty, Converter=
                                {StaticResource BooleanToVisibilityConverter}}"/>
</UserControl>

每当BoolProperty的值为true时,您的控件将为visible,如果false将为collapsed

答案 1 :(得分: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>