【问题标题】:UWP: UserControl override GridView item clickUWP:用户控件覆盖 GridView 项目单击
【发布时间】:2016-12-15 01:05:11
【问题描述】:

我在每个 GridView 项目中都有一个 UserControl。如下所示。

<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样式改成圆形

<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}" />

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

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

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

【问题讨论】:

  • 如果你不想处理点击事件,你需要按钮做什么?

标签: c# wpf gridview uwp


【解决方案1】:

尝试 IsHitTestVisible="False" 到您的圆形 SymbolControl 。

【讨论】:

  • 谢谢!这正是我要找的!设置属性后,按钮将不再“吃掉”鼠标单击事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多