Microsoft Ribbon для WPF, только RibbonButton LargeImage - PullRequest
1 голос
/ 15 ноября 2011

если в RibbonButton нет метки, под значком LargeImage много свободного места.Вместо того, чтобы использовать текст, я хотел бы увеличить изображение (ширина и высота).Однако я не нашел решения для этого.

Единственное, что я обнаружил, это настроить поле для размещения изображения в центре, но я хочу, чтобы изображение растягивалось, чтобы соответствоватьвесь регион.

Есть комментарии?

1 Ответ

2 голосов
/ 15 ноября 2011

Отредактируйте шаблон (используйте Blend или, если у вас нет blend, сделайте это следующим образом: .NET 4 управляйте шаблонами по умолчанию без Blend )

Это шаблон управления по умолчаниючасть стиля кнопки ленты:

  <ControlTemplate TargetType="{x:Type ribbon:RibbonButton}">
    <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:Ribbon}}}" Source="{TemplateBinding LargeImageSource}" VerticalAlignment="Center" 
                 Width="32"/>
          <Grid x:Name="Grid" HorizontalAlignment="Center" VerticalAlignment="Center">
            <ribbon: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>

Измените это в соответствии со своими потребностями, например, вы можете настроить ширину и высоту изображения в соответствии с границей:

 <ControlTemplate TargetType="{x:Type ribbon:RibbonButton}">
    <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}" 
                 Stretch="Fill" Height="{Binding ElementName=InnerBorder, Path=ActualHeight}"
                 Margin="{DynamicResource {ComponentResourceKey ResourceId=LargeImageMargin, TypeInTargetAssembly={x:Type ribbon:Ribbon}}}" Source="{TemplateBinding LargeImageSource}" VerticalAlignment="Center" 
                 />
          <Grid x:Name="Grid" HorizontalAlignment="Center" VerticalAlignment="Center">
            <ribbon:RibbonTwoLineText x:Name="TwoLineText" HorizontalAlignment="Center" LineStackingStrategy="BlockLineHeight" LineHeight="13" Margin="1,1,1,0" TextAlignment="Center" Text="{TemplateBinding Label}" VerticalAlignment="Top"/>
          </Grid>
        </StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...