假设我有一个带有 ContentTemplateSelector 的 ContentControl。如果内容未映射到 DataTemplateSelector 中的模板,则 ContentControl 似乎默认将内容类型显示为文本块中的字符串。我想在这种默认情况下折叠内容控件。这可能吗?
如果内容未映射到数据模板选择器中的模板
这不应该发生。 在某些情况下,您的ContentTemplateSelector
会返回 null 吗? 返回 null 实际上与返回<TextBlock Text="{Binding}"/>
相同。 返回空模板而不是空模板
private statiс readonly DataTemplate Empty = new DataTemplate();
------------
{
-----------
return Empty;
}
ContentTemplateSelector
的职责是根据Content
选择一个模板。
如果要隐藏整个ControlControl
,则可以使用带有DataTrigger
的Style
,该绑定到用于在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>
请注意,决定是否隐藏控件的逻辑不属于选择器。