处理ToolTipOpening导致无效转换到System.Windows.Controls.Label
本文关键字:System Windows Controls Label 转换 ToolTipOpening 无效 处理 | 更新日期: 2023-09-27 18:16:49
我得到这个运行时错误:
无法强制转换类型为"System.Windows.Controls"的对象。工具提示'键入System.Windows.Controls.Label。我明白那是什么意思,但我不确定为什么会这样。
当我把鼠标放在一个树视图上时。我想要的是treeview项目上的ToolTipOpening来运行一个方法。这是XAML。我这样做是基于这个线程:
TreeViewItem工具提示绑定不工作
这不是我的问题,但它至少告诉我如何设置工具提示在一个树视图项目:
<TreeView x:Name="ISLTreeView" Height="auto" Background="GhostWhite"
BorderThickness="0" Width="auto"
ItemsSource="{Binding}"
ScrollViewer.VerticalScrollBarVisibility="auto">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded"
Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip
ToolTipOpening="ISL_TreeViewTipOpening">
</ToolTip>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
就是这个方法,里面还没有多少东西。
private void ISL_TreeViewTipOpening(object sender, ToolTipEventArgs e)
{
TreeListViewItem tvi = sender as TreeListViewItem;
}
编辑添加下一个定义标签和另一个树视图的XAML代码
<Label x:Name="NeighborLabel" Content="Neighbors List"></Label>
<TreeView x:Name="NeighborsTreeView" Height="Auto"
Background="GhostWhite" BorderThickness="0" Width="auto"
ItemsSource="{Binding}"
ScrollViewer.VerticalScrollBarVisibility="auto">
</TreeView>
根据codeproject.com上的描述,TreeListViewItem类继承自ListViewItem。你的sender参数是一个TreeViewItem。也许你想转换为类型TreeViewItem。
我发现ToolTipOpening不能附加到TreeviewItem。它被附加到标签上,因为这是编译器发现事件可以附加到的第一个控件,然后我得到了无效强制转换。当我将TextBox添加到treeiview项并将事件处理程序附加到它时,ToolTipOpening事件被正确处理,没有异常。