首页 > 解决方案 > 样式设置的工具提示不起作用

问题描述

以下列表框的工具提示是使用 setter 设置的。鼠标悬停时不会出现任何工具提示。

我怀疑问题出在列表框本身的 itemssource 上。列表框绑定到一个名为 CandidateAttributes 的 AttributeItems 列表。该列表的一个元素是一个名为 AttributePath 的 observablecollection,而我试图将工具提示绑定到的属性路径中的属性称为 ConceptualPath。以下是 CandidateAttributes 的定义-

 public static List<AttributeItem> CoBRRaAttributes { get; set; }

AttributeItems 类-

public class AttributeItem 
{
    private string _displayName = "";
            private ObservableCollection<CoBRRa_WPF.CoBRRaUtilities.ViewModels.QueryTool.AttributeCollection> _AttributePath;


    public AttributeItem(int id, string displayName, ObservableCollection<CoBRRa_WPF.CoBRRaUtilities.ViewModels.QueryTool.AttributeCollection> attributePath)
    {
        DisplayName = displayName;
        AttributePath = attributePath;

    }

    public ObservableCollection<CoBRRa_WPF.CoBRRaUtilities.ViewModels.QueryTool.AttributeCollection> AttributePath
    {
        get
        {
            return _AttributePath;
        }
        set
        {
            _AttributePath = value;
        }
    }
  }

xmal-

            <ListBox 
            Name="lstCandidates" 
            ItemsSource="{Binding Path=UIProperties.CandidateAttributes}"
            >
            <ListBox.ItemTemplate>            
                <DataTemplate>
                    <TextBlock Text="{Binding Path=DisplayName}">
                    </TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <ListBox.ItemContainerStyle>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="Control.ToolTip" Value="{Binding AttributePath.ConceptualPath}"/>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>

我可以用一些文本代替 Binding AttributePath.ConceptualPath,工具提示会显示该文本。只是无法弄清楚为什么它在绑定中不起作用。我怎样才能让它工作?

标签: c#wpfdata-binding

解决方案


您绑定到AttributePath.ConceptualPathAttributePath返回一个ObservableCollection<AttributeCollection>,而这个没有ConceptualPath属性。

您应该将AttributePath属性的类型更改为 justCoBRRa_WPF.CoBRRaUtilities.ViewModels.QueryTool.AttributeCollection或绑定到特定AttributeCollection的 ,例如第一个:

<Setter Property="Control.ToolTip" Value="{Binding AttributePath[0].ConceptualPath}"/>

还要确保这ConceptualPathAttributeCollection班级的公共财产。

编辑:

如果要在工具提示中显示路径列表,则应使用ItemsControl

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="Control.ToolTip">
        <Setter.Value>
            <ItemsControl ItemsSource="{Binding AttributePath}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding ConceptualPath}" />
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Setter.Value>
    </Setter>
</Style>

推荐阅读