2016-12-15 7 views
0

GridViewの中にUserControlがあります。それは以下のようなものです。UWP:UserControlがGridViewアイテムをオーバーライドします

<GridView Name="SymbolItemsGridView" 
      Grid.Column="0" 
      Background="#333333" 
      SelectionMode="None" 
      IsItemClickEnabled="True" 
      ItemsSource="{x:Bind Items}" 
      HorizontalAlignment="Stretch" 
      Margin="15,5,10,15" 
      ItemClick="SymbolGridView_ItemClick"> 
    <GridView.ItemTemplate> 
     <DataTemplate x:DataType="data:SymbolItem"> 
      <local:SymbolControl Margin="10"/> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

上記SymbolControlUserControlですが、私はので、このUserControl内側に一つだけのボタンが丸い形状である

<ContentPresenter CornerRadius="40" 
        Height="40" 
        Width="40" 
        Background="Cyan" 
        x:Name="ContentPresenter" 
        Content="{TemplateBinding Content}" 
        Padding="0" /> 

を丸めるために、そのContentPresenterスタイルを変えました。

<Button Name="SymbolButton" 
      Content="{x:Bind PhoneticSymbolItem.Text}" 
      Style="{StaticResource VowelSymbolButton}" /> 

enter image description here

私の質問は、私はGridViewの項目(上記の黒い部分)の角をクリックしたときにItemClick="SymbolGridView_ItemClick"イベントハンドラのみ動作することです。ラウンドボタンをクリックしても機能しません。

おそらく、ボタンがGridViewアイテムの上にあり、ボタンをクリックするだけでボタンのクリックイベントがトリガーされるからです。しかし、私が設定したいメディアリソースは、GridViewのItemsSource="{x:Bind Items}"にあります。私は私のUserControlに渡す方法を知らず、ボタンのクリックイベントで使用します。

また、ボタンのクリックイベントをGridViewアイテムにポップアップする方法があれば、同様に機能するはずです。私は私の質問が明確であることを願っています。

+1

クリックイベントを処理したくない場合は、どのようなボタンが必要ですか? –

答えて

0

お試しIsHitTestVisible = "False"をSymbolControlラウンドにお試しください。

+0

ありがとう!それはまさに私が探しているものです!プロパティが設定されていると、ボタンはマウスクリックイベントを「食べる」ことはありません。 –

関連する問題