zoukankan      html  css  js  c++  java
  • Silverlight contextMenu 拖拽

    Silverlight4 toolkit 提供了ContextMenu和MenuItem控件来实现右键菜单,下面是效果图

    View Code
     1 <Canvas x:Name="LayoutRoot">
     2 <Border Height="30" Name="bType" Width="90" Canvas.Left="96" BorderThickness="1" BorderBrush="Gray" Background="Transparent" MouseLeftButtonDown="Border_MouseLeftButtonDown" MouseMove="Border_MouseMove" MouseLeftButtonUp="mouseLeftUp">
     3             <sdk:Label Name="lbSencond" HorizontalAlignment="Center" Content="类型" />
     4             <my:ContextMenuService.ContextMenu>
     5                 <my:ContextMenu Name="TypeMenu" Background="Transparent">
     6                     <my:MenuItem Header="植物" Click="TypeMenu_Click">
     7                         <my:MenuItem.Icon>
     8                             <Image Width="16" Height="16" Source="images/zhiwu.jpg" />
     9                         </my:MenuItem.Icon>
    10                     </my:MenuItem>
    11                     <my:Separator />
    12                     <my:MenuItem Header="动物" Click="TypeMenu_Click">
    13                         <my:MenuItem.Icon>
    14                             <Image Width="16" Height="16" Source="images/dongwu.jpg" />
    15                         </my:MenuItem.Icon>
    16                     </my:MenuItem>
    17                 </my:ContextMenu>
    18             </my:ContextMenuService.ContextMenu>
    19         </Border>
    20 </Canvas>

    下面是cs代码

    View Code
     1  private bool isDrag;
     2         private Point startPoint;
     3         private Point endPoint;
     4 
     5         public MainPage()
     6         {
     7             InitializeComponent();
     8           
     9         }     
    10 
    11         private void TypeMenu_Click(object sender, RoutedEventArgs e)
    12         {
    13             MenuItem item = (MenuItem)sender;
    14             switch (item.Header.ToString())
    15             {
    16                 case"动物":
    17                     MessageBox.Show(item.Header.ToString());
    18                     break;
    19                 case"植物":
    20                     MessageBox.Show("类型是植物");
    21                     break;
    22                 default:
    23                     break;
    24             }
    25             TypeMenu.IsOpen = false;
    26         }
    27 
    28         private void mouseLeftUp(object sender, MouseButtonEventArgs e)
    29         {
    30             isDrag = false; 
    31         }
    32 
    33        
    34 
    35 
    36         private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    37         {
    38             Point p = e.GetPosition(LayoutRoot);
    39             SetDrag(p, bType);
    40         }
    41 
    42         private void Border_MouseMove(object sender, MouseEventArgs e)
    43         {
    44             if (isDrag)
    45             {
    46                 endPoint = e.GetPosition(LayoutRoot);
    47                
    48                 Position(endPoint, bType);
    49             }
    50         }
    51 
    52         private void Position(Point end, UIElement uiName)
    53         {
    54             //计算X、Y轴起始点与终止点之间的相对偏移量
    55             double x = end.X - startPoint.X;
    56             double y = end.Y - startPoint.Y;
    57 
    58             Point positon = new Point((double)Canvas.GetLeft(uiName), (double)Canvas.GetTop(uiName));
    59             positon.X += x;
    60             positon.Y += y;
    61 
    62             Canvas.SetLeft(uiName, positon.X);
    63             Canvas.SetTop(uiName, positon.Y);
    64             startPoint = end;
    65         }
    66 
    67         private void SetDrag(Point start, UIElement uiName)
    68         {
    69             isDrag = true;
    70             startPoint = start;
    71             uiName.CaptureMouse();
    72         }
  • 相关阅读:
    MSSQL Rebuild(重建)索引
    网络爬虫原理
    Twitter Storm:单机环境的安装与配置
    1079 回家
    Win2003 Server磁盘配额揭密之补遗篇
    Win2003 Server磁盘配额揭密之启用篇
    编译mapnik(win7 环境下vs2008编译mapnik 0.7.1 成功)
    Writing a Windows Shell Extension(marco cantu的博客)
    Android学习之一:Cygwin简介
    Linux 进程间通信(一)
  • 原文地址:https://www.cnblogs.com/ZJ199012/p/2487666.html
Copyright © 2011-2022 走看看