UWP:UserControl覆盖GridView项目单击

时间:2016-12-15 01:05:11

标签: c# wpf gridview 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,我将其ContentPresenter样式更改为round

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

因此UserControl中唯一的一个按钮是圆形的。

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

enter image description here

我的问题是ItemClick="SymbolGridView_ItemClick"事件处理程序仅在我点击GridView项目的一角(上面的黑色部分)时才有效。如果我点击圆形按钮,它就不起作用。

我知道这可能是因为按钮位于GridView项目的顶部,单击该按钮只会触发按钮单击事件。但是我要设置的媒体资源位于GridView的ItemsSource="{x:Bind Items}"中。我不知道如何将它传递给我的UserControl并被按钮点击事件使用。

或者,如果有一种方法可以将按钮单击事件弹出到GridView项目,它也可以正常工作。我希望我的问题很清楚,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试 IsHitTestVisible =&#34; False&#34; 到您的圆形SymbolControl。