0
のは、私はそれがGridViewの列のみだ単一のボタンを持つ単純なリストビューがあるとしましょう:取り扱いボタンのClickコマンド内のListView
<ListView x:Name="SomeListView" ItemsSource="{Binding Whatever}">
<ListView.View>
<GridView>
<GridViewColumn CellTemplate="{StaticResource myCellTemplate}" Header="ColumnHeader"/>
</GridView>
</ListView.View>
</ListView>
そしてmyCellTemplateは次のようになります。myClickCommandのICommandで
<DataTemplate x:Key="myCellTemplate">
<Viewbox>
<Button x:Name="mybutton" Command="{Binding myClickCommand}" Content="{Binding btnBinding}"></Button>
</Viewbox>
</DataTemplate>
を私のVMで。この時点では、すべてが大変なので、ユーザーのmy buttonをクリックするとmyClickCommandが呼び出されます。今、私は私の行ににいくつかのマウスオーバースタイリングを追加したいので、私はこのようItemContainerStyleを追加します。
<ListView x:Name="SomeListView" ItemContainerStyle="{StaticResource myItemStyle}" ItemsSource="{Binding Whatever}">
...
</ListView>
myItemStyleと同じように:
<Style x:Key="myItemStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid>
<Border x:Name="borderMain" BorderThickness="1" BorderBrush="Transparent">
<GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Rectangle x:Name="rectGlass" Fill="LightGray" Opacity=".2" Visibility="Hidden"></Rectangle>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="borderMain" Property="BorderBrush" Value="DarkGray" />
<Setter TargetName="rectGlass" Property="Visibility" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
この時点で、ユーザーのクリックはしていませんおそらくイベントがボタンにルーティングされていないため、myClickCommandをトリガーします。これを達成するための方法はありますか?
Hmm。これで、myItemStyleのコントロールの順序を変更して、rectGlass Rectangleの「上に」枠を配置することができます。これにより、ボタンをクリックすることができますが、スタイリスティックには私が進めていたことではありません。とにかく、これは質問に答えます。ありがとうございました。 – sabelbe