c# - 样式设置的工具提示不起作用
问题描述
以下列表框的工具提示是使用 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,工具提示会显示该文本。只是无法弄清楚为什么它在绑定中不起作用。我怎样才能让它工作?
解决方案
您绑定到AttributePath.ConceptualPath
但AttributePath
返回一个ObservableCollection<AttributeCollection>
,而这个没有ConceptualPath
属性。
您应该将AttributePath
属性的类型更改为 justCoBRRa_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>
推荐阅读
- c++ - 是否存在围绕类添加方法的最薄包装器之类的东西?
- elasticsearch - 没有 docID 的术语查找
- c# - 在 RabbitMq 中使用 publishAsync 时出现内部服务器错误
- node.js - 无法使用 nock 移除拦截器
- lotus-notes - 如何为日历/日历事件创建通知 - Domino API
- talend - 多个 api 作业在组件 tFileFetch_1 中出现异常
- c++-cli - 更改图表控件中一系列绘图中某些数据点的颜色
- html - Angular 8:为什么只有在点击 2 次后才会加载警报
- java - 一段时间后应用程序因 TokenRefresher 异常而崩溃
- python - 如何检查矩阵在张量流中是否可逆?