在使用 DataTrigger 的"框架元素"类型中找不到属性"内容"



我是WPF的新手。仅当分组等于"搜索结果"时,我才尝试在ListBox项目上显示ToolTip。我收到一个错误,说:

"在类型'框架元素'中找不到属性'内容'。

谁能告诉我下面的代码有什么问题?

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

FrameworkElementTriggers集合仅用于事件触发器,不适用于DataTriggerPropertyTriggers。为包含DataTriggerToolTip定义样式:

<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 说:

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

这不会直接描述您的问题,而是将其解读为:在样式中设置触发器。

本文更具体:WPF 博士博客

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

最新更新