2013-10-03 2 views
0

Я создаю WPF. Я использую ленту в WPF. Есть ли способ создать RibbonButton, у которого есть textBlock внутри? Вот код, который я использую. Я хотел бы разместить textBlock внутри baggerActiveBtn.Добавление текстового поля внутри RibbonButton в WPF

<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

Вам нужно отредактировать Template вашего Button.

Первым делом, включите этот Xmlns в файле XAML:

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

щелкните правой кнопкой Button, Edit Template -> Edit a Copy...
Это фрагмент шаблона вы должны работать на:

...<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>... 

Вы должны разместить TextBlock внутри StackPanel или Grid, чтобы сделать это как пожелаете. С помощью этого кода вы можете вставить любой элемент управления, который вам нравится.

Это должно по крайней мере вести вас! Удачи.

+0

Каждый раз, когда вы выбираете «Редактировать копию», я получаю сообщение об ошибке «Ошибка копирования шаблона». Я пробовал каждый вариант и комбинацию параметров, но продолжаю получать ошибку. Можно ли редактировать RibbonButtons? – Heath

+0

Мой плохой, забыл упомянуть, что вы должны включить этот xmlns в свой xaml: 'xmlns: ribbon =" clr-namespace: System.Windows.Controls.Ribbon.Primitives; assembly = System.Windows.Controls.Ribbon "' – Tico

Смежные вопросы