我有这段代码:
<StackPanel>
<ItemsControl ItemsSource="{Binding Position}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Text="{Binding Name}" Margin="5" />
<TextBox Grid.Column="3" Text="{Binding ID}" Margin="5" />
<Button Grid.Column="4" Content="X" Click="Delete" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
例如我有3行。我想用它的元素删除第二行。我单击第二行中的Delete
按钮,我需要的只是TextBox中的ID
。如果我在后面的代码中得到ID
,我可以从数据库中删除该位置。如果我只有一行就没有问题。在这种情况下,我给包含ID
的TextBox命名,我可以在后面的代码中获取值。但是,如果我在一个单独的行中有3,4,10个位置,我怎么能这样做呢?
答案 0 :(得分:0)
您可以将Button的Tag
绑定到ID
属性,并访问Click
处理程序中的内容:
<Button Grid.Column="4" Content="X" Click="Delete" Tag="{Binding ID}" />
点击处理程序:
private void Delete(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
var id = (int)button.Tag;
// ...
}