1

画像が表示されない理由がわかりません。1 つのスタイルに異なるボタン イメージが必要です。ボタン スタイルのイメージ ブラシとしてボタン イメージを設定しようとしましたが、すべてのボタンに 1 つの画像しかありません。

<Button
    Height="64" Width="64" Margin="0,0,50,50"
    Style="{DynamicResource MyButtonStyle}" VerticalAlignment="Bottom"
    HorizontalAlignment="Right">
    <Image Source="image1.png"/>
</Button>
<Button
    Height="64" Width="64" Margin="0,0,125,50"
    Style="{DynamicResource MyButtonStyle}" VerticalAlignment="Bottom" 
    HorizontalAlignment="Right">
    <Image Source="image2.png"/>
</Button>

ボタンのスタイル

<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Rectangle x:Name="rectangle" Stroke="Black" />
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Opacity" TargetName="rectangle" Value="0.8"/>
                        <Setter Property="Stroke" TargetName="rectangle" Value="#FF478CFB"/>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="OpacityMask" TargetName="rectangle" Value="{x:Null}"/>
                        <Setter Property="Effect" TargetName="rectangle">
                            <Setter.Value>
                                <BlurEffect/>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
4

1 に答える 1

0

あなたのスタイルがありませんContentPresenter。したがって、画像を設定するContentButton、スタイルを使用するときに実際に配置する場所がありませんControlTemplate

だから、このようなもの:

注 - あなたGridを aに変更したため、埋め込まれBorderた a を取り除き、の子として追加しましたRectangleContentPresenterBorder

<Style x:Key="MyButtonStyle"
        TargetType="{x:Type Button}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type Button}">
        <Border x:Name="rectangle">
          <ContentPresenter />
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsMouseOver"
                    Value="True">
            <Setter TargetName="rectangle"
                    Property="Opacity"
                    Value="0.8" />
            <Setter TargetName="rectangle"
                    Property="BorderBrush"
                    Value="#FF478CFB" />
          </Trigger>
          <Trigger Property="IsPressed"
                    Value="True">
            <Setter TargetName="rectangle"
                    Property="OpacityMask"
                    Value="{x:Null}" />
            <Setter TargetName="rectangle"
                    Property="Effect">
              <Setter.Value>
                <BlurEffect />
              </Setter.Value>
            </Setter>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

使用法:

あなたが持っていたのと同じ -

<Button
    Height="64" Width="64" Margin="0,0,125,50"
    Style="{DynamicResource MyButtonStyle}" VerticalAlignment="Bottom" 
    HorizontalAlignment="Right">
    <Image Source="image2.png"/>
</Button>
于 2013-04-17T14:27:00.783 に答える