wpf 中树视图项中的 Panel.ZIndex 属性

发布于 2024-10-20 16:25:00 字数 1445 浏览 2 评论 0原文

我希望当我将鼠标悬停在树视图项目上时,它会与其他项目重叠。
为此,我在 HierarchicalDataTemplate 中将父元素(在本例中为 Border)的 ZIndex 设为 0,并在用户将鼠标悬停在 HierarchicalDataTemplate.Triggers 部分时将此值更改为 1

<HierarchicalDataTemplate  DataType="{x:Type d:MyClass}">
    <Border Name="brd" CornerRadius="5" BorderThickness="1" Padding="3" Margin="0,0,60,0" Panel.ZIndex="0" >
        <StackPanel Orientation="Horizontal" Margin="0,0,0,0" > 

            <Image Source="../Images/icon.jpg"  Height="30"></Image>

            <TextBlock TextAlignment="Center" Text="{Binding Text}" 
                   Margin="3,0,10,0" >
            </TextBlock>  

            <Image Margin="0,0,3,0" 
                   Source="../Images/Img1.jpg" Height="30" />

            <Image Margin="0,0,0,0" 
                   Source="../Images/Img2" Height="30"/>
        </StackPanel>
    </Border>
    <HierarchicalDataTemplate.Triggers>
        <Trigger SourceName="brd" Property="IsMouseOver" Value="True">
            <Setter TargetName="brd" Property="Panel.ZIndex" Value="1"></Setter>
        </Trigger>            
    </HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>



实现这个的整个想法是:
每当用户将鼠标悬停在树视图项目上时,该项目应该与其他控件重叠并且应该完全可见。示例:如果该项目是长文本,则不应强迫用户使用滚动条,而如果他只是指向该项目,则该项目应该与其他控件重叠以显示完整的项目。

但是我无法使用上述触发器来实现这一点。

请帮我做这件事。

I Wish the treeviewitem to overlap the other items when i mouse hover it.
To do this i made the parent element (in my case its Border) within the HierarchicalDataTemplate to have the ZIndex as 0 and changed this value to 1 when the user hovers the mouse in the HierarchicalDataTemplate.Triggers section

<HierarchicalDataTemplate  DataType="{x:Type d:MyClass}">
    <Border Name="brd" CornerRadius="5" BorderThickness="1" Padding="3" Margin="0,0,60,0" Panel.ZIndex="0" >
        <StackPanel Orientation="Horizontal" Margin="0,0,0,0" > 

            <Image Source="../Images/icon.jpg"  Height="30"></Image>

            <TextBlock TextAlignment="Center" Text="{Binding Text}" 
                   Margin="3,0,10,0" >
            </TextBlock>  

            <Image Margin="0,0,3,0" 
                   Source="../Images/Img1.jpg" Height="30" />

            <Image Margin="0,0,0,0" 
                   Source="../Images/Img2" Height="30"/>
        </StackPanel>
    </Border>
    <HierarchicalDataTemplate.Triggers>
        <Trigger SourceName="brd" Property="IsMouseOver" Value="True">
            <Setter TargetName="brd" Property="Panel.ZIndex" Value="1"></Setter>
        </Trigger>            
    </HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>

The whole idea to implement this was:
Whenever the user hovers the mouse over a treeviewitem, the item should overlap the other controls and should be completely visible. Example: if the item is a long text, then the user should not be forced to use the scroll bar, rather if he just points it the item should be overlapping the other controls to display the complete item.

But i couldn't achieve this using the above triggers.

Please help me doing this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瞳孔里扚悲伤 2024-10-27 16:25:00

您是否尝试过使用工具提示?我自己没有尝试过,但是在看到这个 我确信可以定义一个可以在此使用的 DataTemplate 属性,以便项目按您喜欢的方式显示。

我希望这有帮助。

问候

Did you try using a ToolTip? I didn't try it myself but after seeing this I'm convinced that it's possible to define a DataTemplate which can be used at this property so the item is shown the way you like.

I hope this helps.

Regards

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文