如何在 DataTemplate 中为其类型发出(枚举)值的字符串表示形式?
How can I emit the string representation of a (enum) value inside a DataTemplate for its type?
我创建了一个 DataTemplate
来表示 enum
作为图标(灵感来自 this answer):
<DataTemplate DataType="{x:Type enums:EntryType}">
<Control x:Name="EntryTypeControl"
ToolTip="{Binding}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Debug}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource DebugGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Info}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource InfoGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Warn}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource WarningGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Error}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource ErrorGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Fatal}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource FatalGlyph}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
除工具提示外,这一切正常:我真的很想显示枚举的原始字符串表示形式(即,如果没有 DataTemplate
,我会得到什么)。然而,真正发生的是工具提示再次显示图标。我如何说服模板不引用自身?
显然,如果我为 DataTemplate
分配一个专用的 x:Key
并明确引用它,这会起作用,但是如果不这样做,这也可能吗?
您可以将 TextBlock
添加到 ToolTip
:
<Control x:Name="EntryTypeControl">
<Control.ToolTip>
<ToolTip>
<TextBlock Text="{Binding}" />
</ToolTip>
</Control.ToolTip>
</Control>
我创建了一个 DataTemplate
来表示 enum
作为图标(灵感来自 this answer):
<DataTemplate DataType="{x:Type enums:EntryType}">
<Control x:Name="EntryTypeControl"
ToolTip="{Binding}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Debug}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource DebugGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Info}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource InfoGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Warn}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource WarningGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Error}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource ErrorGlyph}" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="{x:Static enums:EntryType.Fatal}">
<Setter TargetName="ItemTypeControl" Property="Template" Value="{StaticResource FatalGlyph}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
除工具提示外,这一切正常:我真的很想显示枚举的原始字符串表示形式(即,如果没有 DataTemplate
,我会得到什么)。然而,真正发生的是工具提示再次显示图标。我如何说服模板不引用自身?
显然,如果我为 DataTemplate
分配一个专用的 x:Key
并明确引用它,这会起作用,但是如果不这样做,这也可能吗?
您可以将 TextBlock
添加到 ToolTip
:
<Control x:Name="EntryTypeControl">
<Control.ToolTip>
<ToolTip>
<TextBlock Text="{Binding}" />
</ToolTip>
</Control.ToolTip>
</Control>