Wpf 在XAML中有条件地创建视图?

Wpf 在XAML中有条件地创建视图?,wpf,xaml,Wpf,Xaml,我有基于codebehind或viewmodel中的布尔条件在xaml中创建或不创建的视图 我想做一些类似的事情: <AlwaysVisibleView /> <IfShowSometimesViewBindingOrVariableOrSomething> <SometimesView AProperty="something"/> </IfShowSometimesViewBindingOrVariableOrSomething> 我希

我有基于codebehind或viewmodel中的布尔条件在xaml中创建或不创建的视图

我想做一些类似的事情:

<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>