AutoCAD.net利用Xaml創建Ribbon界面


0.Ribbon界面

Ribbon界面設計語言最早於Office 2007出現,后來逐漸被其他Windows系統組件采用,一些專業軟件也開始以Ribbon界面取代傳統菜單欄設計。Ribbon設計語言顯著減少了鼠標點擊的平均次數,且更易於使用戶找到已存在的功能和發現新功能。

Autodesk AutoCAD從 2009 版開始,引入了 Ribbon 界面,並於2015版開始正式取代傳統的菜單組件。一般創建Ribbon界面的方式是用c#新建一個RibbonTab對象,然后加入各種各樣的組件,最后附加到Ribbon中去。這種辦法不方便實現前后端分離的設計,我們可以仿照WPF的方式,用Xaml編寫前端,C#編寫后端。

1.准備工作

本文采用Visual Studio 2019和AutoCAD 2018。AutoCAD 2018需要的.Net Framework版本為≥4.6。

首先,因為需要用到WPF的Xaml模板,創建一個“WPF應用(.Net Framework)”,選擇版本”.Net Framework 4.6”。image

在項目屬性中,將輸出類型改為“類庫”,生成的目標平台改為“x64”。

在“解決方案資源管理器”中,刪除“App.config”、“App.xaml”、“MainWindow.xaml”三項。

批注 2020-08-15 194651

增加“AutoCAD.Net”Nuget包,選擇2018對應的版本22.0.0。

在這個項目中增加一個“用戶控件”模板:

image

2.以Xaml方式創建界面

“MyRibbonTab.xaml”文件中,將內容改為:

<windows:RibbonTab
    x:Class="MyAutoCADProject.MyRibbonTab"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:windows="clr-namespace:Autodesk.Windows;assembly=AdWindows">

</windows:RibbonTab>

“MyRibbonTab.xaml.cs”文件中,將后台代碼改為:

using Autodesk.Windows;

namespace MyAutoCADProject
{
    public partial class MyRibbonTab : RibbonTab
    {
        public MyRibbonTab()
        {
            InitializeComponent();
        }
    }
}

我們創建的這個類繼承自Autodesk.Windows.RibbonTab。到這一步為止,自定義的RibbonTab已經創建出來了。接下來給這個MyRibbonTab增加元素。在前台中,我們加個按鈕:

<windows:RibbonTab
    x:Class="MyAutoCADProject.MyRibbonTab"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:windows="clr-namespace:Autodesk.Windows;assembly=AdWindows">

    <windows:RibbonPanel>
        <windows:RibbonPanelSource Title="我的面板">
            <windows:RibbonButton
                Text="我的按鈕" ShowText="True">
            </windows:RibbonButton>
        </windows:RibbonPanelSource>
    </windows:RibbonPanel>
</windows:RibbonTab>

和用C#創建的方式是對應的,首先增加一個“RibbonPanel”,然后再這個“RibbonPanel”中添加“RibbonPanelSource”,這樣會在空白的“RibbonTab”增加一個面板。最后在“RibbonPanelSource”里增加這個“RibbonButton”,可以按照WPF的方式,為其增加各種各樣的屬性。

3.加載Ribbon界面

接着增加一條命令,用於加載我們制作的RibbonTab,這里是和用c#的方式創建是一樣的,創建方法和加載方法就不在贅述:

using Autodesk.AutoCAD.Runtime;
using Autodesk.Windows;

namespace MyAutoCADProject
{
    public class Commands
    {
        [CommandMethod("ShowMyRibbon")]
        public static void ShowMyRibbon()
        {
            var ribbon = ComponentManager.Ribbon;
            var tab = new MyRibbonTab();
            ribbon.Tabs.Add(tab);
        }
    }
}

最終的效果如下:

批注 2020-08-15 204121

4.總結與展望

到這里,我們已經可以采用xaml的方式,仿照WPF的模板創建Ribbon界面,實現了前后台分離。這里僅涉及界面的創建,此外還有數據綁定等一系列高級的用法。

5.參考文獻

[0].AutoCAD .Net 創建Ribbon界面(一)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM