使用DataTrigger在“FrameworkElement”类型中找不到属性“Content”

时间:2013-10-17 03:01:01

标签: wpf

我是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>

1 个答案:

答案 0 :(得分:1)

Triggers FrameworkElement集合仅适用于事件触发器,不适用于DataTriggerPropertyTriggers。为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>

MSDN says:

  

请注意,仅在元素上建立的触发器集合   支持EventTrigger,而不是属性触发器(Trigger)。如果您需要   属性触发器,您必须将它们放在样式或模板中   然后直接将该样式或模板分配给元素   通过Style属性,或间接通过隐式样式   参考

这并没有直接描述您的问题,而是将其读作:在样式中设置触发器。

本文更具体:Dr. WPF Blog

  

FrameworkElement上还有一个Triggers集合,但它可以   仅包含事件触发器...不是属性或数据触发器。