我是WPF的新手。
我只是在分组等于"搜索结果"时尝试在ToolTip
项目上显示ListBox
。
我收到的错误是:
"财产'内容'未在类型' FrameworkElement'。"
中找到
有谁能告诉我下面的代码有什么问题?
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=code}">
<TextBlock.ToolTip>
<ToolTip>
<ToolTip.Triggers>
<DataTrigger Binding="{Binding Path=grouping}" Value="Search Results">
<Setter Property="Content" Value="{Binding Path=grouping}"/>
</DataTrigger>
</ToolTip.Triggers>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
没有像下面代码那样的触发器,它可以正常工作,所以它让我感到困惑,为什么它说没有找到属性。
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=code}">
<TextBlock.ToolTip>
<ToolTip Content="{Binding Path=grouping}" />
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:1)
Triggers
FrameworkElement
集合仅适用于事件触发器,不适用于DataTrigger
或PropertyTriggers
。为ToolTip
定义包含DataTrigger
:
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=code}">
<TextBlock.ToolTip>
<ToolTip>
<Tooltip.Style>
<Style TargetType="ToolTip">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=grouping}" Value="Search Results">
<Setter Property="Content" Value="{Binding Path=grouping}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ToolTip.Style>
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
请注意,仅在元素上建立的触发器集合 支持EventTrigger,而不是属性触发器(Trigger)。如果您需要 属性触发器,您必须将它们放在样式或模板中 然后直接将该样式或模板分配给元素 通过Style属性,或间接通过隐式样式 参考
这并没有直接描述您的问题,而是将其读作:在样式中设置触发器。
本文更具体:Dr. WPF Blog
FrameworkElement上还有一个Triggers集合,但它可以 仅包含事件触发器...不是属性或数据触发器。