WPF列表框项的名称在鼠标悬停时处于活动状态或处于活动状态

JKoplo

我为此尝试了几种不同的解决方案,但不能满足我的所有需求。

我们有一个可观察的对象集合,每个对象都有一个状态和一个名称。这是一种正在运行的项目的任务列表。为了在WPF中显示此列表,我们有一些代码将每个项目表示为带有某些颜色和动画的椭圆。

问题在于,我们希望在鼠标悬停时或任务处于给定状态时,将项目名称显示为“弹出窗口”。


尝试#1

我的第一次尝试是将它实现为带有实际WPF弹出窗口的Datatemplate(用作ItemTemplate)。我实现了两个数据触发器-一个用于鼠标悬停,另一个用于任务状态。我根据椭圆定位弹出窗口,一切都很好。但是,移动窗口或切换到其他窗口会使弹出窗口位于所有内容的顶部。


尝试#2

我没有使用弹出窗口,而是在画布中使用了文本框。直到在列表框中使用Datatemplate之前,这都很好用。项目宿主(堆栈面板)最终会截断字符串。

这是示例代码:

<DataTemplate x:Key="EllipseTemplate">
    <Grid Height="40" Width="40">
        <Canvas Name="PopupCanvas" HorizontalAlignment="Center" Width="500">
            <TextBlock Name="PopupName"
                   Width="{Binding ElementName=PopupCanvas, Path=ActualWidth}"
                   Text="{Binding}"
                   Background="Transparent"
                   FontSize="16" HorizontalAlignment="Center" TextAlignment="Center" FontWeight="Bold" 
                   Canvas.Top="-25"
                   Visibility="Collapsed"
                   />
        </Canvas>
        <Ellipse x:Name="Ellipse" Height="25" Width="25" Margin="0"
                 HorizontalAlignment="Center" VerticalAlignment="Center"
                 Fill="Green" 
                 RenderTransformOrigin="0.5, 0.5" StrokeThickness="0.5" Stroke="Black">
        </Ellipse>
    </Grid>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource TemplatedParent}}" Value="True">
            <Setter TargetName="PopupName" Property="Visibility" Value="Visible" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

<Grid Name="Test" Background="LightGoldenrodYellow" ClipToBounds="False" Margin="50">
    <ListBox Name="OverlayTest" 
             Background="CornflowerBlue" 
             BorderThickness="0" 
             VerticalAlignment="Center" 
             Margin="10" 
             ClipToBounds="False" 
             ItemTemplate="{StaticResource EllipseTemplate}">
        <sys:String>Very long string that will get clipped</sys:String>
        <sys:String>Two</sys:String>
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" IsItemsHost="True" Margin="10,50,10,50" ClipToBounds="False"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</Grid>

剪裁示例


尝试#3

我将画布/文本框移到了数据模板之外,并创建了一个网格以将其置于椭圆的列表框上方。从布局的角度来看,这是可行的,但在检查鼠标悬停以及将文本框居中活动/悬停的控件的中心方面会造成很大的麻烦。


这样一来,我就无法实现所需的实现方式。有人有什么建议吗?

奥古斯丁0987

好吧,我有另一个主意。我以前有问题ListBox尝试更换ListBoxItemsControl

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将鼠标悬停在子菜单上时,保持css菜单的父项处于活动状态

来自分类Dev

希望在鼠标悬停时隐藏<div>,同时允许后面的链接处于活动状态

来自分类Dev

如何在javascript中鼠标悬停事件处于活动状态时触发onkeypress事件

来自分类Dev

鼠标离开div后,悬停状态仍处于活动状态

来自分类Dev

链接处于活动状态时保持悬停效果

来自分类Dev

NavLink:悬停时处于活动状态的CSS动画

来自分类Dev

当按钮处于活动状态并悬停时更改外观

来自分类Dev

还记得并在鼠标悬停后显示先前处于活动状态的导航选项卡吗?

来自分类Dev

仅使列表中的单击项在反应中处于活动状态

来自分类Dev

使div处于活动状态

来自分类Dev

弹出框处于活动状态时,如何与离子中的背景项交互?

来自分类Dev

角度列表项处于活动状态(单击)

来自分类Dev

clojurescript core.async-判断鼠标悬停时鼠标是否处于按下状态

来自分类Dev

clojurescript core.async-判断鼠标悬停时鼠标是否处于按下状态

来自分类Dev

在UILongPressGestureRecognizer处于活动状态时增长UIImageView

来自分类Dev

崩溃处于活动状态时更改班级

来自分类Dev

在函数处于活动状态时终止脚本

来自分类Dev

将鼠标悬停在菜单上时,保持Jquery slideDown菜单处于打开状态?

来自分类Dev

哪个窗口处于活动状态

来自分类Dev

保持TileService处于活动状态?

来自分类Dev

替换的片段仍处于活动状态

来自分类Dev

单击使按钮处于活动状态

来自分类Dev

wxPython处于非活动状态?

来自分类Dev

更改活动时保持线程处于活动状态

来自分类Dev

rails表单多次提交,当turbolink gem处于活动状态时,远程:未处于活动状态

来自分类Dev

当应用程序未处于活动状态时保持触摸栏处于活动状态

来自分类Dev

填写输入字段时,如何使按钮状态处于活动状态?

来自分类Dev

悬停在子项目上时保持父项目处于活动状态

来自分类Dev

悬停在子项目上时保持父项目处于活动状态

Related 相关文章

  1. 1

    将鼠标悬停在子菜单上时,保持css菜单的父项处于活动状态

  2. 2

    希望在鼠标悬停时隐藏<div>,同时允许后面的链接处于活动状态

  3. 3

    如何在javascript中鼠标悬停事件处于活动状态时触发onkeypress事件

  4. 4

    鼠标离开div后,悬停状态仍处于活动状态

  5. 5

    链接处于活动状态时保持悬停效果

  6. 6

    NavLink:悬停时处于活动状态的CSS动画

  7. 7

    当按钮处于活动状态并悬停时更改外观

  8. 8

    还记得并在鼠标悬停后显示先前处于活动状态的导航选项卡吗?

  9. 9

    仅使列表中的单击项在反应中处于活动状态

  10. 10

    使div处于活动状态

  11. 11

    弹出框处于活动状态时,如何与离子中的背景项交互?

  12. 12

    角度列表项处于活动状态(单击)

  13. 13

    clojurescript core.async-判断鼠标悬停时鼠标是否处于按下状态

  14. 14

    clojurescript core.async-判断鼠标悬停时鼠标是否处于按下状态

  15. 15

    在UILongPressGestureRecognizer处于活动状态时增长UIImageView

  16. 16

    崩溃处于活动状态时更改班级

  17. 17

    在函数处于活动状态时终止脚本

  18. 18

    将鼠标悬停在菜单上时,保持Jquery slideDown菜单处于打开状态?

  19. 19

    哪个窗口处于活动状态

  20. 20

    保持TileService处于活动状态?

  21. 21

    替换的片段仍处于活动状态

  22. 22

    单击使按钮处于活动状态

  23. 23

    wxPython处于非活动状态?

  24. 24

    更改活动时保持线程处于活动状态

  25. 25

    rails表单多次提交,当turbolink gem处于活动状态时,远程:未处于活动状态

  26. 26

    当应用程序未处于活动状态时保持触摸栏处于活动状态

  27. 27

    填写输入字段时,如何使按钮状态处于活动状态?

  28. 28

    悬停在子项目上时保持父项目处于活动状态

  29. 29

    悬停在子项目上时保持父项目处于活动状态

热门标签

归档