Adding textbox inside RibbonButton in WPF

I am creating WPF. I am using Ribbon in WPF. Is there a way to create a RibbonButton that has a textBlock inside? Here is the code I am using. I would like to place a textBlock inside baggerActiveBtn.

<Ribbon x:Name="RibbonWin"
        SelectedIndex="0"
        Margin="81,23,-81,77"
        Grid.RowSpan="2">
  <RibbonTab Header="Home"
             KeyTip="H">
    <!-- Home  group-->
    <RibbonGroup x:Name="MenuGroup">
      <RibbonButton Name="baggerActiveBtn"
                    Height="67"
                    Margin="368,36,86,0"
                    MouseOverBorderBrush="#FFFFC500"
                    VerticalAlignment="Top"
                    BorderBrush="Red"
                    Click="test123">

        <RibbonButton.MouseOverBackground>
          <LinearGradientBrush EndPoint="0.5,1"
                               StartPoint="0.5,0">
            <GradientStop Color="#FFFFC500"
                          Offset="0" />
            <GradientStop Color="White"
                          Offset="1" />
          </LinearGradientBrush>
        </RibbonButton.MouseOverBackground>

      </RibbonButton>
    </RibbonGroup>
  </RibbonTab>
</Ribbon>

      

0


source to share


1 answer


You need to edit Template

your Button

.

First, include this xmlns in your XAML file:

xmlns:ribbon="clr-namespace:System.Windows.Controls.Ribbon.Primitives;assembly=System.Windows.Controls.Ribbon"

      

Right-click your Button

, Edit Template -> Edit a Copy...


This template fragment, over which you have to work:



...<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="{TemplateBinding CornerRadius}" SnapsToDevicePixels="True">
            <Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}" Padding="{TemplateBinding Padding}">
                <StackPanel x:Name="StackPanel">
                    <Image x:Name="PART_Image" RenderOptions.BitmapScalingMode="NearestNeighbor" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Height="32" Margin="{DynamicResource {ComponentResourceKey ResourceId=LargeImageMargin, TypeInTargetAssembly={x:Type Ribbon}}}" Source="{TemplateBinding LargeImageSource}" VerticalAlignment="Center" Width="32"/>
                    <Grid x:Name="Grid" HorizontalAlignment="Center" VerticalAlignment="Center">
                        <RibbonTwoLineText x:Name="TwoLineText" HorizontalAlignment="Center" LineStackingStrategy="BlockLineHeight" LineHeight="13" Margin="1,1,1,0" TextAlignment="Center" Text="{TemplateBinding Label}" VerticalAlignment="Top"/>
                    </Grid>
                </StackPanel>
            </Border>
        </Border>...

      

You have to put you TextBlock

inside StackPanel

or Grid

to do it however you want. With this code, you can insert any control you like.

This should at least guide you! Good luck.

0


source







All Articles