WPF模板绑定基于另一个元素中内容的存在性的元素宽度

ycggw6v2  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(136)

我有自定义控件(不是用户控件),它继承自ContentControl。其默认样式:

<Style TargetType="{x:Type views:DialogCustomControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type views:DialogCustomControl}">
                    <Grid>
                        <Border Width="40">
                            <ContentPresenter Content="{TemplateBinding IconContent}" />
                        </Border>

如果IconContent不为null,则需要为40,否则为0。

  • 我知道如何用Dep Prop在代码中工作。但我很肯定,这也是可能的声明。
tp5buhyn

tp5buhyn1#

您可以将DataTrigger添加到Border的Style中,并使用x:Null作为其Value:

<Border>
    <Border.Style>
        <Style TargetType="Border">
            <Setter Property="Width"
                    Value="40" />
            <Style.Triggers>
                <DataTrigger Binding="{TemplateBinding IconContent}"
                                Value="{x:Null}">
                    <Setter Property="Width"
                            Value="0" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
    <ContentPresenter Content="{TemplateBinding IconContent}" />
</Border>

相关问题