Как установить текст в заголовке RibbonApplicationMenu

Я пытаюсь разместить текст на верхнем уровне 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"    
 


Цель состоит в том, чтобы слово «Файл» появилось в обведенной ниже области.

RibbonApplicationMenu

23
задан citronas 13 September 2011 в 22:20
поделиться

2 ответа

Право. Если вы не хотите использовать выделенный код и сложные вычисления глифов, используйте следующий 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>

Преимущества этого подхода:

  • Только для XAML, без кода позади
  • Без измерения глифов
  • Легко изменить ярлык
6
ответ дан 29 November 2019 в 01:54
поделиться

Следующее решение было опубликовано на форуме MSDN . Он включает в себя изменение стиля, используемого в теме по умолчанию (?).

Я проверил исходный код элементов управления ленты (пожалуйста, скачайте MicrosoftRibbonForWPFSourceAndSamples с веб-сайта ). В файле темы (\MicrosoftRibbonForWPFSourceAndSamples\RibbonControlsLibrary\Themes\Generic.xaml) ленты вы можете обнаружить, что этот стиль "&#220;" используется для RibbonApplicationMenu. В этом стиле нет элемента для отображения текста, у него есть только один элемент Image для отображения изображения.

К счастью, мы могли изменить код стиля и добавить некоторые элементы управления в стиле «&#220;». Пожалуйста, введите код:

строка 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 &#220;}"
       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 с измененными источниками, но ссылка больше не работает.

0
ответ дан 29 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: