2

私にはスタイルがあります

<Style x:Key="HomeButtonStyle" TargetType="Button">
    <Setter Property="Height" Value="32"/>
    <Setter Property="Width" Value="32"></Setter>
    <Setter Property="Content">
        <Setter.Value>
            <Image Source="/Images/HOME.png"></Image>
        </Setter.Value>
    </Setter>
</Style>

コントロールにいくつかのxamlがあります

    <StackPanel Grid.Row="0" Orientation="Horizontal">
        <Button Style="{DynamicResource HomeButtonStyle}" />
        <Button Style="{DynamicResource HomeButtonStyle}" />
        <Button Style="{DynamicResource HomeButtonStyle}" />
        <Button Style="{DynamicResource HomeButtonStyle}" />
    </StackPanel>

ただし、画像は最後のボタンにのみ表示されます。

私の質問はなぜですか?すべてのボタンに画像を表示する方法は?

4

2 に答える 2

7

あなたのスタイルContentTemplateでは、直接ではなく設定する必要がありContentます。

<Setter Property="ContentTemplate">
  <Setter.Value>
     <DataTemplate>
       <Image Source="/Images/HOME.png"></Image>
     </DataTemplate>
    </Setter.Value>
</Setter>
于 2013-02-07T13:56:26.353 に答える
4
<Image x:Key="HomeImage" x:Shared="false" Source="/Images/Home.jpg" />
<Style x:Key="HomeButtonStyle" TargetType="Button">
    <Setter Property="Height" Value="32"/>
    <Setter Property="Width" Value="32"></Setter>
    <Setter Property="Content" Value="{StaticResource HomeImage}" />
</Style>

あなたのコードは、既に別のビジュアル ツリーに追加されているイメージ コントロールを再利用しています。x:shared を使用して、毎回 Image コントロールの新しいインスタンスを作成すると、すべてうまくいきます。詳細はこちら

于 2013-02-07T13:58:17.903 に答える