下面的列表框的工具提示是使用设置器设置的。鼠标悬停时没有任何工具提示。
我怀疑问题是列表框本身的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的位置,工具提示会显示该文本。只是无法弄清楚为什么它在绑定中不起作用。我该如何使用它?
答案 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}"/>
还要确保ConceptualPath
是AttributeCollection
类的公共属性。
编辑:
如果要在工具提示中显示路径列表,则应使用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>