我已经动态创建了一个内容为6行的网格。我想要做的是动态地为每一行创建一个点击事件。我没有得到如何为每一行创建Tap事件。
有没有例子?或任何解决方案?
我的观点:
<Grid x:Name="LayoutRoot" Width="490" Background="{StaticResource PhoneChromeBrush}">
</Grid>
这是我的网格。我动态添加了列和行。那么如何动态地为行创建点击事件?
答案 0 :(得分:1)
您问题的另一个解决方案是使用ListBox而不是网格,并在ListBoxItem上使用自定义模板。
然后,当用户点击列表框中的项目时,您可以使用ListBox.SelectedItem / SelectedIndex属性捕获他们选择的行
希望这有帮助
网格更多用于布局,而不是用于交互
答案 1 :(得分: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;
答案 2 :(得分:0)