c# - DevExpress 一个功能区用于多个 RichEditControls
问题描述
我有两个 RichEditControls 和一个自动生成的功能区。
要将功能区用于两个控件,我执行了以下操作(在此建议的指导下):
- 我在我的 XAML 中添加了这个:
<dxre:RichEditControlProvider x:Name="recp" />
这是我的 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}}" />
解决方案
看来我找到了答案。 当我问我的问题时,我还没有完成第 5 步和第 6 步。代码隐藏中也缺少代码。
如果您想在一个功能区中拥有多个 RichEditControl,请执行以下步骤:
- 添加一个 RichEditControl(例如从工具箱拖放)
- 自动生成功能区:
- 在设计器中单击右上角的按钮 (1)
- 选择一页或全部 (2)
- 通过单击蓝色文本自动生成 (3) 多次执行此操作以生成更多页面
- 添加您的第二个 RichEditControl
- 现在在您的 xaml 代码中的某处添加 RichEditControlProvider。
- 使用 Visual Studio 替换函数 ( CTRL+ H) 将所有内容替换
Binding ElementName=richEditControl1
为Binding Path=RichEditControl, ElementName=richEditControlProvider1
您的第一个 RichEditControl 和 RichEditControlProvider 被调用的内容。 - 清除您的richEditControl1 的
BarManager
和Ribbon
属性。 代码隐藏:
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; }
推荐阅读
- python - 使用 django 在数据库中保存上下文元素
- python - 无法在 macOS“Big Sur”和 python 3.8 中编译 pip 包:“ld:未知选项:-Bsymbolic”
- javascript - java脚本单选按钮
- php - Laravel Eloquent 获取一个月中每一天的销售量
- apache-kafka - 为 /kafka-acl/TransactionalId 创建 ACL 时出现 Kafka 错误 NoAuth
- html - css中媒体查询中的字体大小没有变化
- mysql - 如何使用 HAVING 加速 SQL 查询
- c - 在 GCD 程序中使用指针但没有输出
- python - 如何为 shlex.split 使用特定的停止字符?
- javascript - Recharts 散点图在调整图表大小时显示工具提示中的最低 x 值