gpt4 book ai didi

wpf - 当 ContentControl 的内容为 null 或为空时,显示默认的 DataTemplate?

转载 作者:行者123 更新时间:2023-12-03 07:25:42 27 4
gpt4 key购买 nike

我认为这是可能的,但明显的方法不起作用。

目前,我正在这样做:

<ContentControl
Content="{Binding HurfView.EditedPart}">
<ContentControl.Resources>
<Style
TargetType="ContentControl"
x:Key="emptytemplate">
<Style.Triggers>
<DataTrigger
Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content}"
Value="{x:Null}">
<Setter
Property="ContentControl.Template">
<Setter.Value>
<ControlTemplate>
<Grid
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<TextBlock>EMPTY!</TextBlock>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Resources>
</ContentControl>

我没有收到任何绑定(bind)错误并且可以编译。但是,它不会产生预期的结果。我也尝试过显而易见的方法:

<DataTemplate DataType="{x:Null}"><TextBlock>Hurf</TextBlock></DataTemplate>

这不会编译。尝试设置内容两次也失败:

<ContentControl
Content="{Binding HurfView.EditedPart}">
<TextBlock>DEFAULT DISPLAY</TextBlock>
</ContentControl>

我可以在不编写自定义模板选择器的情况下执行此操作吗?

最佳答案

很简单,你必须在样式中绑定(bind)内容属性。如果存在绑定(bind),样式不会覆盖控件上的值,即使该值计算结果为 Null。试试这个。

<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Content" Value="{Binding HurfView.EditedPart}" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Content}" Value="{x:Null}">
<Setter Property="ContentControl.Template">
<Setter.Value>
<ControlTemplate>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock>EMPTY!</TextBlock>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>

关于wpf - 当 ContentControl 的内容为 null 或为空时,显示默认的 DataTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1217254/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com