DevExpress одна лента для нескольких RichEditControls - PullRequest
3 голосов
/ 11 апреля 2019

У меня есть два 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>

BarItems:

            <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}}" />

1 Ответ

3 голосов
/ 16 апреля 2019

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

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

  1. Добавитьодин RichEditControl (например, с помощью перетаскивания из панели инструментов)
  2. Автоматическое создание ленты: enter image description here
    • В конструкторе нажмите кнопку в правом верхнем углу (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;
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...