中的右键菜单主要是通过ContextMenu来实现,直接在控件的ContextMenu属性中关联即可。在控件中使用ContextMenu。">
当前位置:   article > 正文

WPF —— ContextMenu右键菜单 Canvas控件详解

WPF —— ContextMenu右键菜单 Canvas控件详解

 ContextMenu右键菜单的实例



​​​​​​​WPF
中的右键菜单主要是通过ContextMenu来实现,

在控件中使用ContextMenu

直接在控件的ContextMenu属性中关联即可。

  1. <Label Content="右键弹出内容菜单" FontSize="20" Width="200" Height="40">
  2. <Label.ContextMenu>
  3. <ContextMenu Name="c1" ItemsSource="{Binding}">
  4. <ContextMenu.ItemTemplate>
  5. <HierarchicalDataTemplate ItemsSource="{Binding Path=SubMenus}">
  6. <TextBlock Text="{Binding}"></TextBlock>
  7. </HierarchicalDataTemplate>
  8. </ContextMenu.ItemTemplate>
  9. </ContextMenu>
  10. </Label.ContextMenu>
  11. </Label>

创建一个模型类

  1. private void Window_Loaded_1(object sender, RoutedEventArgs e)
  2. {
  3. this.c1.DataContext = CreateMenu();
  4. }
  5. // 以后有可能在menu菜单和右键菜单等相似的控件中来进行使用,所以最好封装
  6. public List<Menu1> CreateMenu()
  7. {
  8. List<Menu1> list = new List<Menu1>();
  9. // 一级菜单
  10. Menu1 duandian = new Menu1("断点", null);
  11. // 二级菜单对象
  12. Menu1 duandian2_1 = new Menu1("插入断点", duandian);
  13. Menu1 duandian2_2 = new Menu1("插入跟踪点", duandian);
  14. Menu1 duandian2_3 = new Menu1("插入临时断点", duandian);
  15. // 一级菜单
  16. Menu1 pianduan = new Menu1("片段", null);
  17. // 二级菜单
  18. Menu1 pianduan2_1 = new Menu1("外侧代码", pianduan);
  19. list.Add(duandian);
  20. list.Add(pianduan);
  21. return list;
  22. }
  23. }
  24. public class Menu1
  25. {
  26. // 树形结构的模型定义的方法
  27. public List<Menu1> SubMenu { get; set; } // 存储下层数据的list对象
  28. public string Name { get; set; } // 存储标题
  29. // new Menu1 (军事,null)
  30. // new Menu1 (军事1,父级菜单对象) 当前对象添加到父级对象中
  31. public Menu1(string name,Menu1 m1)
  32. {
  33. Name = name;
  34. if(m1 != null)
  35. {
  36. List<Menu1> m2 = m1.SubMenu ?? new List<Menu1>();
  37. m2.Add(this);
  38. m1.SubMenu = m2;
  39. }
  40. }
  41. }

Canvas控件

定义一个区域,可以是其中的子元素相对于canvas进行定位-->
        <!--Canvas.Right="0" 距离canvas右边的距离是0 上下左同理
        定位元素 不要设置两个相对的距离,例如设置了Canvas。Right,就不要设置Canvas.Left

  1. <Canvas Width="500" Height="300">
  2. <StackPanel Width="100" Height="100" Background="Red"></StackPanel>
  3. <StackPanel Width="100" Height="100" Background="Black"
  4. Canvas.Right="0"
  5. Canvas.Top="0"></StackPanel>
  6. <StackPanel Width="100" Height="100" Background="Gray" Canvas.Left="0" Canvas.Bottom="0">
  7. </StackPanel>
  8. <StackPanel Width="100" Height="100" Background="Pink" Canvas.Right="0" Canvas.Bottom="0">
  9. </StackPanel>
  10. <WrapPanel Width="100" Height="100" Background="Yellow" Canvas.Left="200"
  11. Canvas.Top="100">
  12. </WrapPanel>
  13. </Canvas>
  14. <!--<StackPanel Width="500" Height="300" Background="Red">
  15. <Button Width="100"
  16. Height="100"
  17. VerticalAlignment="Top"
  18. HorizontalAlignment="Left"
  19. Margin="400,0,0,0">
  20. 按钮
  21. </Button>
  22. </StackPanel>-->
  23. </Grid>

 效果图如下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/329360
推荐阅读
相关标签
  

闽ICP备14008679号