2017-10-10 5 views
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をトリガーします。これを達成するための方法はありますか?

答えて

0

あなたの長方形(rectGlass)がボタンの上にあります。実際に決してクリックされないため、ボタンはクリックイベントを受け取りません。

+0

Hmm。これで、myItemStyleのコントロールの順序を変更して、rectGlass Rectangleの「上に」枠を配置することができます。これにより、ボタンをクリックすることができますが、スタイリスティックには私が進めていたことではありません。とにかく、これは質問に答えます。ありがとうございました。 – sabelbe