0

私は2つ持っています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>

BoolPropertyの値が になるたびに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 に答える