按样式设置的工具提示不起作用

时间:2018-08-10 13:55:33

标签: c# wpf data-binding

下面的列表框的工具提示是使用设置器设置的。鼠标悬停时没有任何工具提示。

我怀疑问题是列表框本身的itemssource。该列表框绑定到称为CandidateAttributes的AttributeItems列表。该列表的一个元素是一个名为AttributePath的Observable集合,而我尝试将工具提示绑定到的Attribute路径中的属性称为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的位置,工具提示会显示该文本。只是无法弄清楚为什么它在绑定中不起作用。我该如何使用它?

1 个答案:

答案 0 :(得分:0)

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

您应该将AttributePath属性的类型更改为仅CoBRRa_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>