Windows phone为每个网格行创建Tap事件

本文关键字:创建 Tap 事件 网格 phone Windows | 更新日期: 2023-09-27 18:21:20

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

有什么例子吗?或者任何解决方案?

我的观点:

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

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

Windows phone为每个网格行创建Tap事件

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

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

希望这能帮助

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

不能为网格行创建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;
我设法做到了只需将网格行的背景设置为透明即可。贷方:为什么可以';t我点击/点击Border/ContentControl内部的空白区域,而不设置子项';将背景设置为透明?