16

Web 指向スタイルのようなアプリケーション用のイメージ ボタンを作成する必要があります。20x20 ピクセルの画像があり、画像と同じサイズの画像ボタンが必要です。

これを xaml 内に設定しようとしましたが、機能しません:

<Button Grid.Row="0" Margin="0" Padding="0" Click="AddtoFavorite_Click" Width="20" Height="20"  VerticalAlignment="Top" HorizontalAlignment="Right">
   <Button.Content>
      <Image Source="/MyNamespace;component/images/star_yellow.png" Margin="0" Width="20" Height="20" />
   </Button.Content>
</Button>

なにが問題ですか?


解決

最良の解決策は次のとおりです。

<Image Source="/MyNamespace;component/images/star_yellow.png" ManipulationStarted="Image_ManipulationStarted" Width="20" Height="20"></Image> 

ありがとうございます!

4

7 に答える 7

20

コードに特定のエラーは見られませんが、現在、テストして失敗する理由を確認するためのツールがありません。

ただし、画像で VisualBrush を作成し、それをボタンの背景として使用できます。

<Button>
    <Button.Background>
        <ImageBrush ImageSource="xyz.png"/>
    </Button.Background>
</Button>

ほとんどの背景はブラシ タイプなので、SolidColorBrush、LinearGradientBrush、ImageBrush などを使用できます。色に限定されません。

于 2010-11-29T11:06:29.610 に答える
4

これは古いですが、ここでより良い解決策だと思ったものを提供すると思いました。これらのソリューションの一部では、ボタンを画像に置き換えたり、背景を画像ブラシに置き換えたりする必要があります。通常のボタン スタイル、黒または白のボックス (テーマによって異なります) で画像を囲むことを除けば、これで問題ありません。

このソリューションでは、SilverGeek によるリンクのようなオブジェクトをサブクラス化することなく、ボタンの完全な忠実度を維持しながら、画像をボタン自体として使用できます。

まず、新しいスタイルを作成します (App.xaml またはページ リソースのいずれか)。

<Style x:Key="ImageButtonStyle" TargetType="Button">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="Button">
            <Grid>
                <Image x:Name="StartButtonImage" Source="/Images/YourImageFile.png"/>
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                    Content=""/>
            </Grid>
        </ControlTemplate>
    </Setter.Value>
</Setter>

次に、そのスタイルを使用して任意の場所にボタンを作成します。

<Button Style={StaticResource ImageButtonStyle}/>

クリックイベントなど、必要なものを追加します。ボタンは画像のスタイル全体を引き継ぎます。

于 2012-02-05T23:05:02.313 に答える
4

最善の解決策は次のとおりだと思います。

<Button ...>
    <Button.Template>
         <ControlTemplate>
              <Image .... />
         </ControlTemplate>
     </Button.Template>
</Button>

開始された操作を使用すると、微妙に非標準の動作になります。ほとんどのボタンでは、クリックしてからドラッグすると、ボタンのクリックは発生しません。ただし、ManipulationStarted を使用すると、すぐに起動します。

これらの設計時の考慮事項を管理する最善の方法は、Expression Blend を使用することです。ブレンドでは、ボタンを右クリックして、デザイン ツールを使用してテンプレートを編集できます。これにより、xaml の編集方法を知ることの重要性が低くなります。Blend の使い方を学ぶのは本当に価値があります。

于 2011-03-02T03:57:04.510 に答える
3

多分あなたはこの記事に興味があるでしょう:

http://silvergeek.net/2011/01/14/imagebutton-control-for-win-phone-7/

于 2011-01-14T10:55:56.893 に答える
1

Buttonコントロールは、ほとんどのコントロールをコンテンツ(テキストだけでなく)として使用できるため、「画像ボタン」は必要ありません。代わりに、次のようにボタン内に画像コントロールを配置するだけです。

<Button>
    <Image Source="http://www.richmondwiki.org/images/search-button.png"></Image>
</Button>

このアプローチ(ボタンの背景にImageBrushを使用するのとは対照的に)は、画像/ボタンのサイズについて心配したりハードコードしたりする必要がないことを意味します-WP7がこれを処理します。

操作イベントにフックする代わりに、提供されているButtonコントロールを使用することをお勧めします。これにより、タッチターゲットに適切なマージンを設定するなどの心配をする必要がなくなります。

于 2012-01-01T07:52:11.623 に答える
0

画像をボタンの背景として設定するか、コンテンツとして使用する場合は、理論的にはスタックパネル内で機能するはずです。

于 2010-11-29T10:25:04.497 に答える
0

ボタンを使用する必要さえありません。

Image コントロールで MouseLeftButtonUp イベントをフックできます。

 <Image
            Source='blue02.png'
            Width='26'
            Height='26'
            Margin='5'
            MouseLeftButtonUp='Image_MouseLeftButtonUp' />
于 2010-11-30T00:25:31.077 に答える