0

我有这个代码:

<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第二行中的按钮,我需要的只是ID文本框内部。如果我得到ID后面的代码,我可以从数据库中删除那个位置。如果我只有一排,没有问题。在这种情况下,我为包含 的 TextBox 命名,ID我可以在后面的代码中获取值。但是,如果我在单独的行中有 3、4、10 个位置,我该怎么做?

4

1 回答 1

0

您可以将按钮绑定TagID属性并在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;
    // ...
}
于 2013-07-25T09:28:11.940 回答