画像を表示し、クリックするとコマンドを呼び出すことができるユーザーコントロールを作成したいと思います。後で、これらのコントロールのリストを製品のリストにバインドしたいと思います。
この非常に単純なアプローチを試してください
<Grid>
<Button Height="50" Width="50">
<Button.Template>
<ControlTemplate>
<Image Source="yourimage.png"/>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
// do smt
}
さて、もう少しいじった後、単純なボタンが仕事をします。ここにあります:
<Button Command="{Binding Path=DisplayProductCommand}" >
<Image Source="..\Images\my-beautiful-product.jpg"/>
</Button>
これを行うにはいくつかの方法がありますが、簡単な解決策の1つは、ボタンを使用して(おそらく、境界線と背景をスタイリングして)、ボタンのコンテンツとして画像を使用することです。
後でListBoxなどを使用し、DataTemplateをオーバーライドして、各製品のボタンと画像を使用できます。
<Image Name="imageFoo" Source="/AppFoo;component/Foo.png" Width="32" Cursor="Hand" MouseUp="imageFoo_MouseUp"/>
private void imageFoo_MouseUp(object sender, MouseButtonEventArgs e)
{
//Do something
}
皆さんのことはわかりませんが、PreviewMouseDown
とTouchUp
は、私のバインディングとともに完全に正常に機能しました。
<Image x:Name="bla" Source="{Binding blabla}" ... TouchDown="bla_TouchDown" PreviewMouseDown="bla_PreviewMouseDown">
VS2015を使用しています