如何折叠显示默认模板的 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
,您可以使用 Style
和 DataTrigger
绑定到与 [=] 相同的 属性 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。
假设我有一个带有 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 空模板
private statiс readonly DataTemplate Empty = new DataTemplate();
------------
{
-----------
return Empty;
}
ContentTemplateSelector
的职责是 select 基于 Content
的模板。
如果您想隐藏整个 ControlControl
,您可以使用 Style
和 DataTrigger
绑定到与 [=] 相同的 属性 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。