处理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>

处理ToolTipOpening导致无效转换到System.Windows.Controls.Label

根据codeproject.com上的描述,TreeListViewItem类继承自ListViewItem。你的sender参数是一个TreeViewItem。也许你想转换为类型TreeViewItem。

我发现ToolTipOpening不能附加到TreeviewItem。它被附加到标签上,因为这是编译器发现事件可以附加到的第一个控件,然后我得到了无效强制转换。当我将TextBox添加到treeiview项并将事件处理程序附加到它时,ToolTipOpening事件被正确处理,没有异常。