web-dev-qa-db-ja.com

Windows Phone7の画像ボタン

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> 

ありがとうございます!

16
Nicola Celiento

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

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

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

ほとんどの背景はブラシタイプであるため、SolidColorBrush、LinearGradientBrush、ImageBrushなどを使用できます。色に制限はありません。

20

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

このソリューションでは、ボタンの完全な忠実度を維持しながら、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}/>

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

4
Bil Simser

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

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

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

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

4
Mac

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

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

3
SilverGeek.net

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

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

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

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

1
Henry C

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

0
Mick N

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

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

 <Image
            Source='blue02.png'
            Width='26'
            Height='26'
            Margin='5'
            MouseLeftButtonUp='Image_MouseLeftButtonUp' />
0
Walt Ritscher