Я пытаюсь разместить текст на верхнем уровне RibbonApplicationMenu (пытаюсь найти там слово «Файл», как в Word или Outlook). Кажется, Microsoft.Windows.Controls.Ribbon.RibbonApplicationMenu
http://msdn.microsoft.com/en-us/library/microsoft.windows.controls.ribbon.ribbonapplicationmenu.aspx поддерживает SmallImageSource, но без свойства текста. Установка свойства Label
не работает для этой проблемы.
xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
Цель состоит в том, чтобы слово «Файл» появилось в обведенной ниже области.
Право. Если вы не хотите использовать выделенный код и сложные вычисления глифов, используйте следующий XAML:
<RibbonApplicationMenu.SmallImageSource>
<DrawingImage>
<DrawingImage.Drawing>
<GeometryDrawing>
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,20,20"></RectangleGeometry>
</GeometryDrawing.Geometry>
<GeometryDrawing.Brush>
<VisualBrush Stretch="Uniform">
<VisualBrush.Visual>
<TextBlock Text="File" FontSize="16" Foreground="White" />
</VisualBrush.Visual>
</VisualBrush>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingImage.Drawing>
</DrawingImage>
</RibbonApplicationMenu.SmallImageSource>
Преимущества этого подхода:
Следующее решение было опубликовано на форуме MSDN . Он включает в себя изменение стиля, используемого в теме по умолчанию (?).
Я проверил исходный код элементов управления ленты (пожалуйста, скачайте MicrosoftRibbonForWPFSourceAndSamples с веб-сайта ). В файле темы (
\MicrosoftRibbonForWPFSourceAndSamples\RibbonControlsLibrary\Themes\Generic.xaml
) ленты вы можете обнаружить, что этот стиль "Ü
" используется дляRibbonApplicationMenu
. В этом стиле нет элемента для отображения текста, у него есть только один элемент Image для отображения изображения.К счастью, мы могли изменить код стиля и добавить некоторые элементы управления в стиле «
Ü
». Пожалуйста, введите код:строка 7264, измените код:
<!--<Image IsHitTestVisible="False" Source="{Binding RelativeSource ={RelativeSource FindAncestor, AncestorType ={x:Type ribbon:RibbonApplicationMenu}},
Path = SmallImageSource} "HorizontalAlignment =" Center "VerticalAlignment =" Center "Ширина =" 16 "Высота =" 16 "RenderOptions.BitmapScalingMode =" NearestNeighbor "RenderOptions.EdgeMode =" Aliased "/> ->
строка 7433, добавьте код
Label="{TemplateBinding Label}"
в конце элементаRibbonToggleButton
:...... <ControlTemplate TargetType="{x:Type ribbon:RibbonApplicationMenu}"> <Grid Focusable="False" x:Name="OuterGrid" SnapsToDevicePixels="True"> <ribbon:RibbonToggleButton x:Name="PART_ToggleButton" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" Style="{StaticResource Ü}" FocusVisualStyle="{TemplateBinding FocusVisualStyle}" Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Height}" Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width}" ToolTipTitle="{TemplateBinding ToolTipTitle}" ToolTipDescription="{TemplateBinding ToolTipDescription}" ToolTipImageSource="{TemplateBinding ToolTipImageSource}" ToolTipFooterTitle="{TemplateBinding ToolTipFooterTitle}" ToolTipFooterDescription="{TemplateBinding ToolTipFooterDescription}" ToolTipFooterImageSource="{TemplateBinding ToolTipFooterImageSource}" SmallImageSource="{TemplateBinding SmallImageSource}" IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsDropDownOpen, Mode=TwoWay}" Label="{TemplateBinding Label}"/>
строка 7564, добавить код
Label="{TemplateBinding Label}"
в конец элементаRibbonToggleButton
:...... <Canvas> <ribbon:RibbonToggleButton x:Name="PART_PopupToggleButton" AutomationProperties.Name="{Binding RelativeSource={RelativeSource TemplatedParent},
Path = (AutomationProperties.Name)} "Canvas.Top =" - 24 "Canvas.Left = "3" IsChecked = "{Binding RelativeSource = {RelativeSource TemplatedParent}, Path = IsDropDownOpen}" BorderBrush = "{TemplateBinding BorderBrush}" Background = "{TemplateBinding Background}" BorderThickness = "{TemplateBinding BorderThickness}"
Style = "{StaticResource Ü}" Focusable = "False" Height = "{Binding RelativeSource = {RelativeSource TemplatedParent}, Path = Высота}" Width = "{Binding RelativeSource = {RelativeSource TemplatedParent}, Path = Width}" Label = "{TemplateBinding Label}" /> И в Ribb В Windows мы могли бы установить свойство Label RibbonApplicationMenu следующим образом:<ribbon:RibbonApplicationMenu Label="File">
Сообщение на форуме действительно содержало ZIP с измененными источниками, но ссылка больше не работает.