Как стать автором
Обновить

Комментарии 2

Если переключить стиль в классический и обратно то панель пропадет. Можно отследить WSCURRENT.
Да и для красоты стоит добавить картинок:

rButton2.LargeImage = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                Properties.Resources.positionalLeaderNode.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty,
                System.Windows.Media.Imaging.BitmapSizeOptions.FromWidthAndHeight(32, 32));
                rButton2.ShowImage = true;
                rButton2.Size = RibbonItemSize.Large;

а для пущего эффекта еще и RibbonToolTip
Как-то так:

RibbonToolTip rButton2lToolTip = new RibbonToolTip()
{
    Title = "Узловая выноска",
    Image = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
        Properties.Resources.positionalLeaderNodeToolTip.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty,
        System.Windows.Media.Imaging.BitmapSizeOptions.FromWidthAndHeight(
        Properties.Resources.positionalLeaderNodeToolTip.Width, Properties.Resources.positionalLeaderNodeToolTip.Height)),
    Command = "TNGP_POSITIONALLEADER_NODE_ID"
};
RibbonButton rButton2 = new RibbonButton();
rButton2.ToolTip = rButton2lToolTip;



Про WSCURRENT — все так, нужно отслеживать переменную и при необходимости пересоздавать вкладку.
Как-то так:
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Windows;

namespace MyAutoCADDll
{
    public class Commands : IExtensionApplication
    {
        // эта функция будет вызываться при выполнении в AutoCAD команды "TestCommand"
        [CommandMethod("TestCommand")]
        public void MyCommand()
        {
            // даем команду отслеживать изменения рабочей области (Workspace) AutoCAD 
            Autodesk.AutoCAD.ApplicationServices.Application.SystemVariableChanged +=
                new Autodesk.AutoCAD.ApplicationServices.SystemVariableChangedEventHandler(onSystemVariableChanged);
        }

        public void Initialize()
        {

        }

        public void Terminate()
        {

        }

        // обработчик изменения рабочей области (Workspace) AutoCAD
        void onSystemVariableChanged(object sender, Autodesk.AutoCAD.ApplicationServices.SystemVariableChangedEventArgs e)
        {
            // если рабочая область изменилась и в новой области есть лента (Ribbon)
            if ((e.Name == "WSCURRENT") && (ComponentManager.Ribbon != null))
            {
                // создаем вкладку
                addMyRibbonTab();
            }
        }
    }
}

А настройка внешнего вида кнопок меня в свое время изрядно выбесила. До сих пор не представляю, как поместить иконку ТОЧНО В ЦЕНТРЕ кнопки (на последней картинке в статье видно, что если навести на кнопку курсор, то левая граница кнопки оказывается ближе к иконке, чем правая). И до сих пор не могу понять, можно ли внутрь кнопки нормально поместить текст. У вас с этим сложностей не возникало?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории