DevExpress одна лента для нескольких RichEditControls

У меня есть два RichEditControls и одна автоматически сгенерированная лента.

Чтобы использовать ленту для обоих элементов управления, я сделал следующее (под руководством это предложение):

  1. Я добавил это в свой XAML: <dxre:RichEditControlProvider x:Name = "recp" />
  2. Это мой XAML.CS

    public TaskView()
    {
        InitializeComponent();
        richEditControl1.GotFocus += RichEditControl1OnGotFocus;
        richEditControl2.GotFocus += RichEditControl2OnGotFocus;
    }
    
    
    private void RichEditControl1OnGotFocus(object sender, RoutedEventArgs routedEventArgs)
    {
        recp.RichEditControl = richEditControl1;
        richEditControl2.BarManager = null;
        richEditControl1.BarManager = barManager1;
    }
    
    
    private void RichEditControl2OnGotFocus(object sender, RoutedEventArgs routedEventArgs)
    {
        recp.RichEditControl = richEditControl2;
        richEditControl1.BarManager = null;
        richEditControl2.BarManager = barManager1;
    }
    

Это позволяет мне использовать ленту и для второго RichEditControl.

Теперь моя проблема заключается в том, что есть необязательные возможности редактирования таблиц RibbonPages и редактирования изображений, которые отображаются только при выборе таблицы или изображения. К сожалению, они не синхронизируются с выбранным RichEditControl, поэтому я могу использовать их только для первого элемента управления.

Это автоматически сгенерированный код XAML для страниц редактирования изображений:

Лента:

                <dxr:RibbonPageCategory x:Name = "catPictureTools"
                                        Caption = "{Binding ConverterParameter=Caption_PageCategoryFloatingObjectPictureTools, Converter = {StaticResource stringIdConverter}, Mode=OneTime, Source = {StaticResource stringIdConverter}}"
                                        dxre:AttachedCommand.Command = "{Binding ToolsFloatingPictureCommandGroup, Mode=OneTime, Source = {StaticResource commands}}">
                    <dxr:RibbonPage x:Name = "pagePictureToolsFormat"
                                    Caption = "{Binding ConverterParameter=Caption_PageFloatingObjectPictureToolsFormat, Converter = {StaticResource stringIdConverter}, Mode=OneTime, Source = {StaticResource stringIdConverter}}">
                        <dxr:RibbonPageGroup x:Name = "grpPictureToolsFormatShapeStyles"
                                             Caption = "{Binding ConverterParameter=Caption_GroupFloatingPictureToolsShapeStyles, Converter = {StaticResource stringIdConverter}, Mode=OneTime, Source = {StaticResource stringIdConverter}}"
                                             ShowCaptionButton = "False">
                            <dxr:RibbonPageGroup.ItemLinks>
                                <dxr:BarButtonGroupLink BarItemName = "biShapeColors" />
                                <dxr:BarButtonGroupLink BarItemName = "biShapeOutlineWeight" />
                            </dxr:RibbonPageGroup.ItemLinks>
                        </dxr:RibbonPageGroup>
                        <dxr:RibbonPageGroup x:Name = "grpPictureToolsFormatArrange"
                                             Caption = "{Binding ConverterParameter=Caption_GroupFloatingPictureToolsArrange, Converter = {StaticResource stringIdConverter}, Mode=OneTime, Source = {StaticResource stringIdConverter}}"
                                             ShowCaptionButton = "False">
                            <dxr:RibbonPageGroup.ItemLinks>
                                <dxb:BarSubItemLink BarItemName = "biPictureWrapText" />
                                <dxb:BarSubItemLink BarItemName = "biPicturePosition" />
                                <dxb:BarSubItemLink BarItemName = "biPictureBringForwardPlaceholder" />
                                <dxb:BarSubItemLink BarItemName = "biPictureSendBackwardPlaceholder" />
                            </dxr:RibbonPageGroup.ItemLinks>
                        </dxr:RibbonPageGroup>
                    </dxr:RibbonPage>
                </dxr:RibbonPageCategory>

БарПредметы:

            <dxr:BarButtonGroup x:Name = "biShapeColors">
                <dxr:BarButtonGroup.ItemLinks>
                    <dxre:BarSplitButtonColorEditItemLink BarItemName = "biPictureShapeFillColor" />
                    <dxre:BarSplitButtonColorEditItemLink BarItemName = "biPictureShapeOutlineColor" />
                </dxr:BarButtonGroup.ItemLinks>
            </dxr:BarButtonGroup>
            <dxre:BarSplitButtonColorEditItem x:Name = "biPictureShapeFillColor"
                                              Command = "{Binding PictureShapeFillColor, Mode=OneTime, Source = {StaticResource commands}}">
                <dxb:PopupControlContainerInfo>
                    <dxe:ColorEdit EditValue = "{Binding EditValue, ElementName=biPictureShapeFillColor, Mode=TwoWay}"
                                   ShowDefaultColorButton = "False"
                                   ShowNoColorButton = "True"
                                   ShowBorder = "False" />
                </dxb:PopupControlContainerInfo>
            </dxre:BarSplitButtonColorEditItem>
            <dxre:BarSplitButtonColorEditItem x:Name = "biPictureShapeOutlineColor"
                                              Command = "{Binding PictureShapeOutlineColor, Mode=OneTime, Source = {StaticResource commands}}">
                <dxb:PopupControlContainerInfo>
                    <dxe:ColorEdit EditValue = "{Binding EditValue, ElementName=biPictureShapeOutlineColor, Mode=TwoWay}"
                                   ShowDefaultColorButton = "False"
                                   ShowNoColorButton = "True"
                                   ShowBorder = "False" />
                </dxb:PopupControlContainerInfo>
            </dxre:BarSplitButtonColorEditItem>
            <dxr:BarButtonGroup x:Name = "biShapeOutlineWeight">
                <dxr:BarButtonGroup.ItemLinks>
                    <dxb:BarEditItemLink BarItemName = "biPictureShapeOutlineWeight" />
                </dxr:BarButtonGroup.ItemLinks>
            </dxr:BarButtonGroup>
            <dxb:BarEditItem x:Name = "biPictureShapeOutlineWeight"
                             Content = ""
                             Command = "{Binding PictureShapeOutlineWeight, Mode=OneTime, Source = {StaticResource commands}}"
                             EditWidth = "150">
                <dxb:BarEditItem.EditSettings>
                    <dxre:RichEditBorderLineWidthEditSettings RichEditControl = "{Binding ElementName=richEditControl1}" />
                </dxb:BarEditItem.EditSettings>
            </dxb:BarEditItem>
            <dxb:BarSubItem x:Name = "biPictureWrapText"
                            Command = "{Binding PictureWrapText, Mode=OneTime, Source = {StaticResource commands}}">
                <dxb:BarSubItem.ItemLinks>
                    <dxb:BarCheckItemLink BarItemName = "biPictureWrapTextSquare" />
                    <dxb:BarCheckItemLink BarItemName = "biPictureWrapTextTight" />
                    <dxb:BarCheckItemLink BarItemName = "biPictureWrapTextThrough" />
                    <dxb:BarCheckItemLink BarItemName = "biPictureWrapTextTopAndBottom" />
                    <dxb:BarCheckItemLink BarItemName = "biPictureWrapTextBehind" />
                    <dxb:BarCheckItemLink BarItemName = "biPictureWrapTextInFrontOf" />
                </dxb:BarSubItem.ItemLinks>
            </dxb:BarSubItem>
            <dxb:BarCheckItem x:Name = "biPictureWrapTextSquare"
                              Command = "{Binding PictureWrapTextSquare, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarCheckItem x:Name = "biPictureWrapTextTight"
                              Command = "{Binding PictureWrapTextTight, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarCheckItem x:Name = "biPictureWrapTextThrough"
                              Command = "{Binding PictureWrapTextThrough, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarCheckItem x:Name = "biPictureWrapTextTopAndBottom"
                              Command = "{Binding PictureWrapTextTopAndBottom, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarCheckItem x:Name = "biPictureWrapTextBehind"
                              Command = "{Binding PictureWrapTextBehind, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarCheckItem x:Name = "biPictureWrapTextInFrontOf"
                              Command = "{Binding PictureWrapTextInFrontOf, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarSubItem x:Name = "biPicturePosition"
                            Command = "{Binding PicturePosition, Mode=OneTime, Source = {StaticResource commands}}">
                <dxb:BarSubItem.ItemLinks>
                    <dxb:BarButtonItemLink BarItemName = "biPictureTopLeftAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureTopCenterAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureTopRightAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureMiddleLeftAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureMiddleCenterAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureMiddleRightAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureBottomLeftAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureBottomCenterAlignment" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureBottomRightAlignment" />
                </dxb:BarSubItem.ItemLinks>
            </dxb:BarSubItem>
            <dxb:BarButtonItem x:Name = "biPictureTopLeftAlignment"
                               Command = "{Binding PictureTopLeftAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureTopCenterAlignment"
                               Command = "{Binding PictureTopCenterAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureTopRightAlignment"
                               Command = "{Binding PictureTopRightAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureMiddleLeftAlignment"
                               Command = "{Binding PictureMiddleLeftAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureMiddleCenterAlignment"
                               Command = "{Binding PictureMiddleCenterAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureMiddleRightAlignment"
                               Command = "{Binding PictureMiddleRightAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureBottomLeftAlignment"
                               Command = "{Binding PictureBottomLeftAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureBottomCenterAlignment"
                               Command = "{Binding PictureBottomCenterAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureBottomRightAlignment"
                               Command = "{Binding PictureBottomRightAlignment, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarSubItem x:Name = "biPictureBringForwardPlaceholder"
                            Command = "{Binding PictureBringForwardPlaceholder, Mode=OneTime, Source = {StaticResource commands}}">
                <dxb:BarSubItem.ItemLinks>
                    <dxb:BarButtonItemLink BarItemName = "biPictureBringForward" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureBringToFront" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureBringInFrontOfText" />
                </dxb:BarSubItem.ItemLinks>
            </dxb:BarSubItem>
            <dxb:BarButtonItem x:Name = "biPictureBringForward"
                               Command = "{Binding PictureBringForward, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureBringToFront"
                               Command = "{Binding PictureBringToFront, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureBringInFrontOfText"
                               Command = "{Binding PictureBringInFrontOfText, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarSubItem x:Name = "biPictureSendBackwardPlaceholder"
                            Command = "{Binding PictureSendBackwardPlaceholder, Mode=OneTime, Source = {StaticResource commands}}">
                <dxb:BarSubItem.ItemLinks>
                    <dxb:BarButtonItemLink BarItemName = "biPictureSendBackward" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureSendToBack" />
                    <dxb:BarButtonItemLink BarItemName = "biPictureSendBehindText" />
                </dxb:BarSubItem.ItemLinks>
            </dxb:BarSubItem>
            <dxb:BarButtonItem x:Name = "biPictureSendBackward"
                               Command = "{Binding PictureSendBackward, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureSendToBack"
                               Command = "{Binding PictureSendToBack, Mode=OneTime, Source = {StaticResource commands}}" />
            <dxb:BarButtonItem x:Name = "biPictureSendBehindText"
                               Command = "{Binding PictureSendBehindText, Mode=OneTime, Source = {StaticResource commands}}" />
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
352
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, я нашел ответ. Когда я задал свой вопрос, я еще не сделал шаги 5 и 6. Также код отсутствовал в коде программной части.

Если вы хотите иметь несколько RichEditControls с одной лентой, выполните следующие действия:

  1. Добавьте один RichEditControl (например, с помощью перетаскивания из панели инструментов)
  2. Автоматически сгенерируйте ленту:
    • В дизайнере нажмите на кнопку в правом верхнем углу (1)
    • Выберите одну страницу ленты или все (2)
    • Создайте его автоматически, нажав на синий текст (3). Сделайте это несколько раз, чтобы создать больше страниц.
  3. Добавьте свой второй RichEditControl
  4. Теперь добавьте RichEditControlProvider где-нибудь в свой xaml-код.
  5. Используйте функцию замены Visual Studio (CTRL+H), чтобы заменить все Binding ElementName=richEditControl1 на Binding Path=RichEditControl, ElementName=richEditControlProvider1 или как там называются ваш первый RichEditControl и ваш RichEditControlProvider.
  6. Очистите свойства BarManager и Ribbon вашего richEditControl1.
  7. Код позади:

    public MyView()
    {
        InitializeComponent();
        richEditControl1.GotFocus += RichEditControl1OnGotFocus;
        richEditControl2.GotFocus += RichEditControl2OnGotFocus;
        RichEditControl1OnGotFocus(null, null);
    }
    
    
    private void RichEditControl1OnGotFocus(object sender, RoutedEventArgs routedEventArgs)
    {
        richEditControlProvider1.RichEditControl = richEditControl1;
        richEditControl1.Ribbon = ribbonControl1;
        richEditControl2.Ribbon = null;
        richEditControl1.BarManager = barManager1;
        richEditControl2.BarManager = null;
    }
    
    
    private void RichEditControl2OnGotFocus(object sender, RoutedEventArgs routedEventArgs)
    {
        richEditControlProvider1.RichEditControl = richEditControl2;
        richEditControl1.Ribbon = null;
        richEditControl2.Ribbon = ribbonControl1;
        richEditControl1.BarManager = null;
        richEditControl2.BarManager = barManager1;
    }
    

Другие вопросы по теме