在DataGrid中查找Button行

时间:2014-05-06 14:27:43

标签: c# wpf button datagrid

我有一个程序,其中包含 DataGrid ,其中 DataGridTemplateColumn 填充了按钮。由于行数是可变的,因此所有按钮都将命令绑定到同一个函数。但是,这意味着我现在需要发送一个 CommandParameter 来识别按钮的“索引”(等于它所在行的索引)。这是我无法弄清楚的。我应该以 CommandParameter 的身份发送什么来了解按钮的索引?

请参阅下面的.xaml(删除与手头问题无关的所有内容)。 Button CommandParameter是我要填写的内容。

<UserControl x:Class="WPF.NOptionsTab"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
         mc:Ignorable="d" 
         xmlns:l="clr-namespace:WPF">
<Grid>
    <Grid.Resources>
        <DataTemplate x:Key="CablesColumn">
            <Button Command="{Binding Path=DataContext.CablesClick, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}}"
                    CommandParameter="{Binding }"
                    Width="50"
                    ToolTip="Set cables pulled in this phase."
                    Content="Set"/>
        </DataTemplate>
    </Grid.Resources>
    <DataGrid x:Name="PhaseGrid"
              AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Cables" CellTemplate="{StaticResource CablesColumn}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

1 个答案:

答案 0 :(得分:0)

如果您确实需要索引,则可以在绑定集合上使用IndexOf,因为当前CommandParameter已绑定到该行的数据对象。

var index = BindingCollection.IndexOf(commandParam);

您可以将其放入Cables Click ICommand的方法中。