Silverlight實用竅門系列:4.Silverlight 4.0新增滑鼠右鍵選單和Silverlight全屏模式的進入退出。【附帶原始碼例項】...

weixin_30924079發表於2020-04-04

     繼上節動態的新增Rectangle矩形框所講。在實際應用中,我們動態新增矩形框,然後使用滑鼠右鍵點選該矩形框,得到一個彈出視窗,再為此矩形框關聯一些實際資訊。即可實現使用者自定義的配置頁面。本節將講兩個小技巧:一.滑鼠右鍵選單。二.Silverlight全屏模式。

     一.使用滑鼠右鍵選單。在這裡我們需要單獨引入兩個Dll檔案。(右鍵專案名稱-->“新增引用”-->尋找到System.Windows.Controls.Input.Toolkit.dll[可以從本文原始碼中找到])

     System.Windows.Controls;

     System.Windows.Controls.Input.Toolkit;

     MainPage.xaml程式碼如下

<UserControl x:Class="SLRightMouseButton.MainPage"
    xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="640" Height="480">
    <Canvas x:Name="LayoutRoot">
        <Rectangle x:Name="ti" Width="150" Height="150" RadiusX="5" RadiusY="5" Fill="Blue"></Rectangle>
        <my:ContextMenuService.ContextMenu>
            <my:ContextMenu Name="mymenu">
                <my:MenuItem Header="關聯地區" Click="MenuItem_Click"/>
                <my:Separator/>
                <my:MenuItem Header="關聯頁面" Click="MenuItem_Click"/>
                <my:Separator/>
                <my:MenuItem Header="進入全屏" Click="MenuItem_Click"/>
            </my:ContextMenu>
        </my:ContextMenuService.ContextMenu>
    </Canvas>
</UserControl>

      在這裡很明顯是為名為ti的Rectangle矩形區域之內可以被右鍵點選,然後右鍵點選得到右鍵選單“關聯地區”“關聯頁面”“進入全屏”三項。這三個專案都加在到同一個點選事件MenuItem_Click中處理。

 MainPage.xaml.cs檔案關鍵程式碼處理MenuItem_Click事件程式碼如下

  /// <summary>
        /// 滑鼠右鍵選擇相應的項的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MenuItem_Click(object sender, RoutedEventArgs e)
        {
            MenuItem menuItem = (MenuItem)sender;
            switch (menuItem.Header.ToString())
            {
                case "關聯地區":
                    MessageBox.Show("關聯地區");//在此可以彈出一個視窗顯示關聯地區的子視窗。然後選擇相應的資料,為此Rectangle關聯地區
                    
                    break;
                case "關聯頁面":
                    MessageBox.Show("關聯頁面");//在此可以彈出一個視窗顯示關聯頁面的子視窗。然後選擇相應的資料,為此Rectangle關聯頁面
                    break;
                case "進入全屏":
                    menuItem.Header = FullScreens(menuItem.Header.ToString());//呼叫FullScreens函式來設定當前是否全屏,以及獲取下次點選滑鼠右鍵獲得的右鍵選單Header字。
                    break;
                case "取消全屏":
                    menuItem.Header = FullScreens(menuItem.Header.ToString());
                    break;
                default:
                    break;
            }
            mymenu.IsOpen = false;//右鍵選單關閉
        }
        /// <summary>
        /// 是否進入全屏
        /// </summary>
        /// <param name="IsScreen">全屏引數</param>
        /// <returns></returns>
        private string FullScreens(string IsScreen)
        {
            Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
            if (IsScreen == "進入全屏")
            {
                IsScreen = "取消全屏";
            }
            else
            {
                IsScreen = "進入全屏";
            }
            return IsScreen;
        }
    }

      在程式碼中 使用MenuItem menuItem = (MenuItem)sender;捕捉到觸發本事件的物件,然後判斷當前物件的Header的值是多少?然後進行相應的處理就可以了。值得注意的是這裡牽扯到了我們今天需要將的第二個小知識點。

        二.Silverlight的全屏模式的進入。

  Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
        就是這句簡單的程式碼將可以讓你的Silverlight程式進入或者退出全屏模式。

        本例項原始碼基於Silverlight 4.0和VS 2010開發。

        本小節的原始碼附上點選  http://files.cnblogs.com/chengxingliang/SLRightMouseButton.rar 

        另外所需DLL下載點選:System.Windows.Controls.Data.Input.rar

轉載於:https://www.cnblogs.com/chengxingliang/archive/2011/02/14/1954399.html

相關文章