如何折叠显示默认模板的 ContentControl?

How can I collapse a ContentControl that's showing the default template?

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

If the Content doesn't map to a template in the DataTemplateSelector

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

而不是 null
   private statiс readonly DataTemplate Empty = new DataTemplate();

    ------------
   {
       -----------
       return Empty;
   }

ContentTemplateSelector 的职责是 select 基于 Content 的模板。

如果您想隐藏整个 ControlControl,您可以使用 StyleDataTrigger 绑定到与 [=] 相同的 属性 23=] 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>

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