我有UserControl's
两个
根据我的 ViewModel 中的值,我希望每次都显示另一个 UserControl。
他们应该坐在UserControl
包裹着他们的地方。
我怎样才能做到这一点?
这里是包装:
<UserControl>
<local:UserControl1></local:UserControl1>// I want it to change by a binding
</UserControl>
我有UserControl's
两个
根据我的 ViewModel 中的值,我希望每次都显示另一个 UserControl。
他们应该坐在UserControl
包裹着他们的地方。
我怎样才能做到这一点?
这里是包装:
<UserControl>
<local:UserControl1></local:UserControl1>// I want it to change by a binding
</UserControl>
您可以在 ViewModel 中有一个 bool 属性BoolProperty
,并基于该值您可以使用以下方式切换其他控件的可见性BooleanToVisibilityConverter
-
<UserControl>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</UserControl.Resources>
<local:UserControl1 Visibility="{Binding BoolProperty, Converter=
{StaticResource BooleanToVisibilityConverter}}"/>
</UserControl>
每当BoolProperty
will 的值是true
,您的控制将是visible
,如果是,false
将是collapsed
。
使用 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>