我有两个UserControl's
,
我希望,根据我的ViewModel中的值,每次都显示另一个UserControl。
他们应该坐在包裹他们的UserControl
。
我该怎么做?
这里是包装器:
<UserControl>
<local:UserControl1></local:UserControl1>// I want it to change by a binding
</UserControl>
答案 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>