-1

を作成するために ResourceDictionary を作成しControlTemplateましたButton

ここに私のXAMLコードがあります

<ControlTemplate TargetType="{x:Type Button}" x:Key="BoutonRessources">
<Button Width="32" Margin="0,0,7,0" Name="tbrClear" ToolTip="Clear" VerticalAlignment="Center" BorderThickness="0" HorizontalAlignment="Center" Background="Transparent" HorizontalContentAlignment="Center">
    <Button.Content>
        <Border>
            <Image Source="xRtDiva_XWPF_TBR_PREMIER.PNG_IMAGES.png" Height="18"/>
            <Border.Style>
                <Style TargetType="{x:Type Border}">
                    <Setter Property="Background" Value="Transparent" />
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background">
                                <Setter.Value>
                                    <ImageBrush ImageSource="BoutonToolbarSelected.png"/>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="Height"  Value="22"/>
                            <Setter Property="Width"  Value="32"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Border.Style>
        </Border>
    </Button.Content>
    <Button.Style>
        <Style TargetType="{x:Type Button}" >
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}" >
                        <ContentPresenter />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>
</ControlTemplate>

XAML コードで y テンプレートを使用する場合:

<Button Template="{StaticResource BoutonRessources}">

このテンプレート「BoutonRessources」の画像を設定するためにパラメータを与えたいと思います。

私はこのように私のコードを変更しようとしました:

<Button Template="{StaticResource BoutonRessources}">
   <Button.Content>
       <Border>
           <Image Source="myNewPicture.png" Height="18"/>
       </Border>
   </Button.Content>
</Button>

ボタン テンプレートの画像をパーソナライズするにはどうすればよいですか?

どうもありがとう :)

4

2 に答える 2

0

ボタン テンプレートでは、ボタンのコンテンツを固定値に設定しているため、ボタン自体にコンテンツを割り当てても何も起こりません。テンプレートのどこかに、ContentPresenter. これを行うContentPresenterと、ボタンのコンテンツを割り当てたものに置き換えられます。

何を達成しようとしていますか?ボタンの画像を 2 つにしたいですか、それとも 1 つにしたいですか? おそらく、テンプレートの作成に関するこのチュートリアル (またはそこにある他の多くのチュートリアルの 1 つ) を見て、それが役立つかどうかを確認してください: http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button- template-in.html

簡単な例として、このテンプレートへの小さな変更により、コンテンツに追加した画像が、テンプレートで手動で割り当てた画像の隣に追加されます。StackPanel を追加ContentPresenterし、テンプレートに を配置したことに注意してください。これは、ボタンに割り当てたコンテンツに置き換えられ、テンプレートで設定した「xRtDiva...」画像の右側に表示されます。

<ControlTemplate TargetType="{x:Type Button}" x:Key="BoutonRessources">
        <Button Width="50" Margin="126.5,126,115.5,126" Name="tbrClear" ToolTip="Clear" VerticalAlignment="Center" BorderThickness="0" HorizontalAlignment="Center" Background="Transparent" HorizontalContentAlignment="Center">
            <StackPanel Orientation="Horizontal">
                <Border>
                    <Image Source="xRtDiva_XWPF_TBR_PREMIER.PNG_IMAGES.png" Height="18"/>
                    <Border.Style>
                        <Style TargetType="{x:Type Border}">
                            <Setter Property="Background" Value="Transparent" />
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Background">
                                        <Setter.Value>
                                            <ImageBrush ImageSource="BoutonToolbarSelected.png"/>
                                        </Setter.Value>
                                    </Setter>
                                    <Setter Property="Height"  Value="22"/>
                                    <Setter Property="Width"  Value="32"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Border.Style>
                </Border>
                <Border>
                    <ContentPresenter/>
                </Border>
            </StackPanel>

            <Button.Style>
                <Style TargetType="{x:Type Button}" >
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type Button}" >
                                <ContentPresenter />
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Button.Style>

        </Button>
    </ControlTemplate>

Button.Styleただし、ボタン内に割り当てたについては非常に混乱しています。その目的は何ですか?

于 2013-02-21T21:14:50.023 に答える
0

なぜあなたは次のことをすることができないのですか?

<Button>
    <Image Source="firstImage.png" />
</Button>

<Button>
    <Image Source="secondImage.png" />
</Button>

<Button>
    <Image Source="thirdImage.png" />
</Button>

この場合、ボタン テンプレートを変更したい場合は、画像を配置したい場所に ContentPresenter 要素を配置するだけです。

于 2013-02-21T21:57:59.917 に答える