0

我动态创建了一个包含 6 行内容的网格。我想要做的是为每一行动态创建一个点击事件。我不知道如何为每一行创建一个 Tap 事件。

有没有例子?或任何解决方案?

我的观点 :

    <Grid x:Name="LayoutRoot" Width="490" Background="{StaticResource PhoneChromeBrush}">

    </Grid>

这是我的网格。我已经动态添加了列和行。那么如何动态地为行创建一个点击事件呢?

4

3 回答 3

1

您的问题的另一个解决方案是使用 ListBox 而不是网格,并在 ListBoxItem 上使用自定义模板。

然后,当用户点击列表框中的项目时,您可以使用 ListBox.SelectedItem / SelectedIndex 属性捕获他们选择的行

希望这可以帮助

网格更多的是用于布局,而不是用于交互

于 2013-07-08T12:56:17.550 回答
0

我以某种方式设法做到了只需将网格行的背景设置为透明即可。归功于: 为什么我不能在不将孩子的背景设置为透明的情况下点击/单击 Border/ContentControl 内的空白区域?

于 2014-06-11T01:15:54.760 回答
0

您不能为网格行创建 Tap 事件。把你可以做的是将行的所有控件放在父控件中,并在该控件中创建事件。

例如(在 XAML 中,但您也可以在 C# 中执行此操作):

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    <Grid.RowDefinitions>

    <StackPanel Grid.Row="0" Tap="StackPanel_Tap">
        <!-- Your controls here -->
    </StackPanel>

    <StackPanel Grid.Row="1" Tap="StackPanel_Tap">
        <!-- Your controls here -->
    </StackPanel>
<Grid>

请注意,您可以使用子网格而不是堆栈面板:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    <Grid.RowDefinitions>

    <Grid Grid.Row="0" Tap="GridRow_Tap">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <!-- Your controls here -->
    </Grid>

    <Grid Grid.Row="0" Tap="GridRow_Tap">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <!-- Your controls here -->
    </Grid>
<Grid>

在 C# 中,要将事件分配给控件,请使用 += 运算符:

 Control.Tap += Control_Tap;
于 2013-07-08T05:55:09.040 回答