秋霞步兵区国产精品,国产精品视频二区第二页,亚洲aⅴ欧美综合一区二区三区,亚洲日韩欧美一区二区不卡

      1. <small id="x8tpb"></small>
        <address id="x8tpb"></address>

        新疆信息港歡迎您!

        新疆信息港
        新疆信息港 > 財(cái)經(jīng) >C# WPF可拖拽的TabControl

        C# WPF可拖拽的TabControl

        2020-03-23 09:37:27
        來源:互聯(lián)網(wǎng)
        閱讀:-

        閱讀導(dǎo)航本文背景代碼實(shí)現(xiàn)本文參考源碼1. 本文背景本文介紹使用第三方開源庫 Dragablz 實(shí)現(xiàn)可拖拽的 TabControl,本文代碼效果圖如下:2. 代碼實(shí)現(xiàn)使用 .Net Framework 4....

        閱讀導(dǎo)航

        1. 本文背景
        2. 代碼實(shí)現(xiàn)
        3. 本文參考
        4. 源碼

        1. 本文背景

        本文介紹使用第三方開源庫 Dragablz 實(shí)現(xiàn)可拖拽的 TabControl,本文代碼效果圖如下:



        2. 代碼實(shí)現(xiàn)

        使用 .Net Framework 4.8 創(chuàng)建名為 “TabMenu2” 的WPF模板項(xiàng)目,添加三個(gè)Nuget庫:MaterialDesignThemes、MaterialDesignColors 和 Dragablz,其中 TabControl 的拖拽功能是由 Dragablz 庫實(shí)現(xiàn)的。

        以下為三個(gè)庫具體版本:

        &lt;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&gt;&lt;packages&gt;  &lt;package id=&#34;Dragablz&#34; version=&#34;0.0.3.203&#34; targetFramework=&#34;net45&#34; /&gt;  &lt;package id=&#34;MaterialDesignColors&#34; version=&#34;1.2.3-ci948&#34; targetFramework=&#34;net48&#34; /&gt;  &lt;package id=&#34;MaterialDesignThemes&#34; version=&#34;3.1.0-ci948&#34; targetFramework=&#34;net48&#34; /&gt;&lt;/packages&gt;

        解決方案主要文件目錄組織結(jié)構(gòu):

        • TabMenu2
        • App.xaml
        • MainWindow.xaml
        • MainWIndow.xaml.cs

        注:站長嘗試使用 .NET CORE 3.1 創(chuàng)建WPF項(xiàng)目,但 Dragablz 庫暫時(shí)未提供 .NET CORE 的版本。想著自己編譯 Dragablz 的 .NET CORE 版本,奈何功力不夠,改了一些源碼,最后放棄了。文中代碼及文末給出的 Demo 運(yùn)行程序需要在 .NET Framework 4.0 運(yùn)行時(shí)環(huán)境下運(yùn)行,想嘗試編譯 Dragablz 庫的朋友可在文末給出的鏈接中下載編譯。

        2.1 引入樣式

        文件【App.xaml】,在 StartupUri 中設(shè)置啟動(dòng)的視圖【MainWindow.xaml】,并在【Application.Resources】節(jié)點(diǎn)增加 MaterialDesignThemes 和 Dragablz 庫的樣式文件:

        &lt;Application x:Class=&#34;TabMenu2.App&#34;             xmlns=&#34;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#34;             xmlns:x=&#34;http://schemas.microsoft.com/winfx/2006/xaml&#34;             xmlns:dragablz=&#34;clr-namespace:Dragablz;assembly=Dragablz&#34;             StartupUri=&#34;MainWindow.xaml&#34;&gt;    &lt;Application.Resources&gt;        &lt;ResourceDictionary&gt;            &lt;ResourceDictionary.MergedDictionaries&gt;                &lt;!-- primary color --&gt;                &lt;ResourceDictionary&gt;                    &lt;!-- include your primary palette --&gt;                    &lt;ResourceDictionary.MergedDictionaries&gt;                        &lt;ResourceDictionary Source=&#34;pack://application:,,,/MaterialDesignColors;component/Themes/MaterialDesignColor.purple.xaml&#34; /&gt;                    &lt;/ResourceDictionary.MergedDictionaries&gt;                    &lt;!--                            include three hues from the primary palette (and the associated forecolours).                            Do not rename, keep in sequence; light to dark.                        --&gt;                    &lt;SolidColorBrush x:Key=&#34;PrimaryHueLightBrush&#34; Color=&#34;{StaticResource Primary100}&#34;/&gt;                    &lt;SolidColorBrush x:Key=&#34;PrimaryHueLightForegroundBrush&#34; Color=&#34;{StaticResource Primary100Foreground}&#34;/&gt;                    &lt;SolidColorBrush x:Key=&#34;PrimaryHueMidBrush&#34; Color=&#34;{StaticResource Primary500}&#34;/&gt;                    &lt;SolidColorBrush x:Key=&#34;PrimaryHueMidForegroundBrush&#34; Color=&#34;{StaticResource Primary500Foreground}&#34;/&gt;                    &lt;SolidColorBrush x:Key=&#34;PrimaryHueDarkBrush&#34; Color=&#34;{StaticResource Primary700}&#34;/&gt;                    &lt;SolidColorBrush x:Key=&#34;PrimaryHueDarkForegroundBrush&#34; Color=&#34;{StaticResource Primary700Foreground}&#34;/&gt;                &lt;/ResourceDictionary&gt;                &lt;!-- secondary colour --&gt;                &lt;ResourceDictionary&gt;                    &lt;!-- include your secondary pallette --&gt;                    &lt;ResourceDictionary.MergedDictionaries&gt;                        &lt;ResourceDictionary Source=&#34;pack://application:,,,/MaterialDesignColors;component/Themes/MaterialDesignColor.purple.xaml&#34; /&gt;                    &lt;/ResourceDictionary.MergedDictionaries&gt;                    &lt;!-- include a single secondary accent color (and the associated forecolour) --&gt;                    &lt;SolidColorBrush x:Key=&#34;SecondaryAccentBrush&#34; Color=&#34;{StaticResource Accent200}&#34;/&gt;                    &lt;SolidColorBrush x:Key=&#34;SecondaryAccentForegroundBrush&#34; Color=&#34;{StaticResource Accent200Foreground}&#34;/&gt;                &lt;/ResourceDictionary&gt;                &lt;!-- Include the Dragablz Material Design style --&gt;                &lt;ResourceDictionary Source=&#34;pack://application:,,,/Dragablz;component/Themes/materialdesign.xaml&#34;/&gt;                &lt;ResourceDictionary Source=&#34;pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml&#34; /&gt;            &lt;/ResourceDictionary.MergedDictionaries&gt;            &lt;!-- tell Dragablz tab control to use the Material Design theme --&gt;            &lt;Style TargetType=&#34;{x:Type dragablz:TabablzControl}&#34; BasedOn=&#34;{StaticResource MaterialDesignTabablzControlStyle}&#34; /&gt;        &lt;/ResourceDictionary&gt;    &lt;/Application.Resources&gt;&lt;/Application&gt;

        2.2 演示窗體布局

        文件【MainWindow.xaml】,引入 MaterialDesignThemes 和 Dragablz 庫的命名空間,【dragablz:TabablzControl】為 Dragablz 庫封裝的 TabControl,使用方式和原生控件類似,單項(xiàng)標(biāo)簽依然使用 TabItem,使用起來很簡單,源碼如下:

        &lt;Window x:Class=&#34;TabMenu2.MainWindow&#34;        xmlns=&#34;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#34;        xmlns:materialDesign=&#34;http://materialdesigninxaml.net/winfx/xaml/themes&#34;        xmlns:d=&#34;http://schemas.microsoft.com/expression/blend/2008&#34;        xmlns:x=&#34;http://schemas.microsoft.com/winfx/2006/xaml&#34;        xmlns:mc=&#34;http://schemas.openxmlformats.org/markup-compatibility/2006&#34;        xmlns:dragablz=&#34;clr-namespace:Dragablz;assembly=Dragablz&#34;        mc:Ignorable=&#34;d&#34;        Height=&#34;600&#34; Width=&#34;1080&#34; ResizeMode=&#34;NoResize&#34; WindowStartupLocation=&#34;CenterScreen&#34;         MouseLeftButtonDown=&#34;Window_MouseLeftButtonDown&#34; WindowStyle=&#34;None&#34;&gt;    &lt;Grid&gt;        &lt;Grid Height=&#34;60&#34; VerticalAlignment=&#34;Top&#34; Background=&#34;#FF9C27B0&#34;&gt;            &lt;TextBlock Text=&#34;Dotnet9.com:可拖拽TabControl&#34; Foreground=&#34;White&#34; HorizontalAlignment=&#34;Center&#34; VerticalAlignment=&#34;Center&#34; FontSize=&#34;22&#34; FontFamily=&#34;Champagne &amp; Limousines&#34; /&gt;            &lt;Button HorizontalAlignment=&#34;Right&#34; VerticalAlignment=&#34;Center&#34; Background=&#34;{x:Null}&#34; BorderBrush=&#34;{x:Null}&#34; Click=&#34;Close_Click&#34;&gt;                &lt;materialDesign:PackIcon Kind=&#34;Close&#34;/&gt;            &lt;/Button&gt;        &lt;/Grid&gt;        &lt;Grid Margin=&#34;0 60 0 0&#34;&gt;            &lt;dragablz:TabablzControl&gt;                &lt;dragablz:TabablzControl.InterTabController&gt;                    &lt;dragablz:InterTabController/&gt;                &lt;/dragablz:TabablzControl.InterTabController&gt;                &lt;TabItem Header=&#34;首頁&#34;&gt;                    &lt;Grid&gt;                        &lt;Grid.RowDefinitions&gt;                            &lt;RowDefinition Height=&#34;50&#34;/&gt;                            &lt;RowDefinition Height=&#34;*&#34;/&gt;                        &lt;/Grid.RowDefinitions&gt;                        &lt;TextBlock FontSize=&#34;30&#34; HorizontalAlignment=&#34;Center&#34; VerticalAlignment=&#34;Center&#34;&gt;                            &lt;Run Text=&#34;歡迎訪問Dotnet9的博客:&#34;/&gt;                            &lt;Hyperlink Click=&#34;ShowWeb_Click&#34; Tag=&#34;https://dotnet9.com&#34;&gt;https://dotnet9.com&lt;/Hyperlink&gt;                        &lt;/TextBlock&gt;                        &lt;WebBrowser Grid.Row=&#34;1&#34; Margin=&#34;5&#34; Source=&#34;https://dotnet9.com&#34;/&gt;                    &lt;/Grid&gt;                &lt;/TabItem&gt;                &lt;TabItem Header=&#34;設(shè)計(jì)&#34;&gt;                    &lt;Grid&gt;                        &lt;Grid.RowDefinitions&gt;                            &lt;RowDefinition Height=&#34;50&#34;/&gt;                            &lt;RowDefinition Height=&#34;*&#34;/&gt;                        &lt;/Grid.RowDefinitions&gt;                        &lt;TextBlock Text=&#34;為用戶體驗(yàn)服務(wù)!&#34; FontSize=&#34;30&#34; HorizontalAlignment=&#34;Center&#34; VerticalAlignment=&#34;Center&#34;/&gt;                        &lt;WebBrowser Grid.Row=&#34;1&#34; Margin=&#34;5&#34; Source=&#34;https://dotnet9.com&#34;/&gt;                    &lt;/Grid&gt;                &lt;/TabItem&gt;                &lt;TabItem Header=&#34;幫助&#34;&gt;                    &lt;Grid&gt;                        &lt;Grid.RowDefinitions&gt;                            &lt;RowDefinition Height=&#34;50&#34;/&gt;                            &lt;RowDefinition Height=&#34;*&#34;/&gt;                        &lt;/Grid.RowDefinitions&gt;                        &lt;TextBlock FontSize=&#34;30&#34; HorizontalAlignment=&#34;Center&#34; VerticalAlignment=&#34;Center&#34;&gt;                            &lt;Run Text=&#34;問答社區(qū):&#34;/&gt;                            &lt;Hyperlink Click=&#34;ShowWeb_Click&#34; Tag=&#34;https://dotnet9.com/questions-and-answers&#34;&gt;https://dotnet9.com/questions-and-answers&lt;/Hyperlink&gt;                        &lt;/TextBlock&gt;                        &lt;WebBrowser Grid.Row=&#34;1&#34; Margin=&#34;5&#34; Source=&#34;https://dotnet9.com/questions-and-answers&#34;/&gt;                    &lt;/Grid&gt;                &lt;/TabItem&gt;                &lt;TabItem&gt;                    &lt;TabItem.Header&gt;                        &lt;Image Source=&#34;https://img.dotnet9.com/logo.png&#34;/&gt;                    &lt;/TabItem.Header&gt;                    &lt;Grid&gt;                        &lt;Grid.RowDefinitions&gt;                            &lt;RowDefinition Height=&#34;50&#34;/&gt;                            &lt;RowDefinition Height=&#34;*&#34;/&gt;                        &lt;/Grid.RowDefinitions&gt;                        &lt;TextBlock HorizontalAlignment=&#34;Center&#34; VerticalAlignment=&#34;Center&#34; FontSize=&#34;30&#34;&gt;                            &lt;Hyperlink Click=&#34;ShowWeb_Click&#34; Tag=&#34;https://dotnet9.com&#34;&gt;https://dotnet9.com&lt;/Hyperlink&gt;                        &lt;/TextBlock&gt;                        &lt;WebBrowser Grid.Row=&#34;1&#34; Margin=&#34;5&#34; Source=&#34;https://dotnet9.com&#34;/&gt;                    &lt;/Grid&gt;                &lt;/TabItem&gt;            &lt;/dragablz:TabablzControl&gt;        &lt;/Grid&gt;    &lt;/Grid&gt;&lt;/Window&gt;

        后臺(tái)代碼【MainWindow.xaml.cs】實(shí)現(xiàn)鼠標(biāo)左鍵拖動(dòng)窗體、右上角關(guān)閉窗體、超鏈接打開網(wǎng)站等功能:

        private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){    DragMove();}private void Close_Click(object sender, RoutedEventArgs e){    this.Close();}private void ShowWeb_Click(object sender, RoutedEventArgs e){    Process.Start((sender as Hyperlink).Tag.ToString());}

        3.本文參考

        1. 視頻一:C# WPF Material Design UI: Tab Menu,配套源碼:TabMenu2。
        2. C# WPF開源控件庫《MaterialDesignInXAML》
        3. Dragablz-C# WPF可拖拽的TabControl控件

        4.源碼

        效果圖實(shí)現(xiàn)代碼在文中已經(jīng)全部給出,可直接Copy,按解決方案目錄組織代碼文件即可運(yùn)行。

        演示Demo(點(diǎn)擊下載-&gt;DragTabControl,2.39 MB)目錄結(jié)構(gòu):

        • DragTabControl
        • TabMenu2.exe
        • Dragablz.dll
        • MaterialDesignThemes.Wpf.dll
        • MaterialDesignColors.dll


        除非注明,文章均由 Dotnet9 整理發(fā)布,歡迎轉(zhuǎn)載。

        轉(zhuǎn)載請(qǐng)注明本文地址:https://dotnet9.com/7391.html


        時(shí)間如流水,只能流去不流回!

        點(diǎn)擊《【閱讀原文】》,本站還有更多技術(shù)類文章等著您哦?。?!

        推薦閱讀:蘋果7p好還是8好

        免責(zé)聲明:本文僅代表企業(yè)觀點(diǎn),與新疆信息港無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對(duì)本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請(qǐng)讀者僅作參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。