如何折叠显示默认模板的内容控件?



假设我有一个带有 ContentTemplateSelector 的 ContentControl。如果内容未映射到 DataTemplateSelector 中的模板,则 ContentControl 似乎默认将内容类型显示为文本块中的字符串。我想在这种默认情况下折叠内容控件。这可能吗?

如果内容未映射到数据模板选择器中的模板

这不应该发生。 在某些情况下,您的ContentTemplateSelector会返回 null 吗? 返回 null 实际上与返回<TextBlock Text="{Binding}"/>相同。 返回空模板而不是空模板

private statiс readonly DataTemplate Empty = new DataTemplate();
------------
{
-----------
return Empty;
}

ContentTemplateSelector的职责是根据Content选择一个模板。

如果要隐藏整个ControlControl,则可以使用带有DataTriggerStyle,该绑定到用于在ContentTemplateSelector中选择模板的同一属性:

<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding YourProperty}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>

请注意,决定是否隐藏控件的逻辑不属于选择器。

最新更新