我有一个程序,其中包含 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>
答案 0 :(得分:0)
如果您确实需要索引,则可以在绑定集合上使用IndexOf
,因为当前CommandParameter
已绑定到该行的数据对象。
var index = BindingCollection.IndexOf(commandParam);
您可以将其放入Cables Click ICommand
的方法中。