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

时间:2017-06-29 00:49:46

标签: wpf xaml

我有基于代码隐藏或视图模型中的布尔条件在xaml中创建或不创建的视图。

我想做类似的事情:

<AlwaysVisibleView />

<IfShowSometimesViewBindingOrVariableOrSomething>
<SometimesView AProperty="something"/>
</IfShowSometimesViewBindingOrVariableOrSomething>

我希望尽可能地避免代码隐藏和其他类似的欺骗,最后理想情况下我不希望实例化视图。

2 个答案:

答案 0 :(得分:1)

动态创建视图有时会变得有点棘手。此外,他们往往会搞砸XAML如何渲染事物。

你能绑定&#34;有时可见视图的可见性&#34;到房产?你可以通过布尔到可见性转换器来运行它,只需让后面的代码切换bool即可显示/隐藏。

Example thread

答案 1 :(得分:1)

您可以使用ContentControlStyle.Triggers根据属性更改内容和展示位置(例如:bool ShowMe):

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