Wpf 在XAML中有条件地创建视图?
我有基于codebehind或viewmodel中的布尔条件在xaml中创建或不创建的视图 我想做一些类似的事情:Wpf 在XAML中有条件地创建视图?,wpf,xaml,Wpf,Xaml,我有基于codebehind或viewmodel中的布尔条件在xaml中创建或不创建的视图 我想做一些类似的事情: <AlwaysVisibleView /> <IfShowSometimesViewBindingOrVariableOrSomething> <SometimesView AProperty="something"/> </IfShowSometimesViewBindingOrVariableOrSomething> 我希
<AlwaysVisibleView />
<IfShowSometimesViewBindingOrVariableOrSomething>
<SometimesView AProperty="something"/>
</IfShowSometimesViewBindingOrVariableOrSomething>
我希望尽可能地实现这个避免代码隐藏和其他类似的技巧,最后,我不希望视图被实例化。视图的动态创建有时会变得有点棘手。此外,它们往往会弄乱XAML如何呈现事物 您能否将“有时可见视图”的可见性绑定到属性?您可以通过布尔值到可见性转换程序来运行它,只需让代码隐藏切换布尔值以显示/隐藏即可
您可以使用
ContentControl
和Style.Triggers
根据属性更改内容和可见性(例如:bool ShowMe
):
您可以使用ContentPresenter,请参阅此解决方案的答案。只有在运行时更改属性时,才可能使用此解决方案。我想,如果控件在运行时没有更改,那么在codebehind中附加一个子控件就可以了。
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Content" Value="{x:Null}"/>
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ShowMe}" Value="True">
<Setter Property="Content">
<Setter.Value>
<SometimesView AProperty="something"/>
</Setter.Value>
</Setter>
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>