DataGrid CellTemplate,将DataContext作为命令参数传递

时间:2017-05-31 13:20:18

标签: c# wpf datagrid

我有DataGrid ItemsSource设置为ObservableCollection<ObservablePuls>

在上一栏中,我有一个按钮,我想将CommandParameter绑定到ObservablePuls。使用此代码,我将null作为CommandParameter传递,并出现此错误:

  

BindingExpression路径错误:&#39; DataContext&#39;找不到物业   &#39;对象&#39; &#39;&#39; ObservablePuls&#39; (的HashCode = 40133923)&#39 ;.   BindingExpression:路径= DataContext的;的DataItem =&#39; ObservablePuls&#39;   (的HashCode = 40133923);目标元素是&#39;按钮&#39; (名称=&#39;&#39);目标   属性是&#39; CommandParameter&#39; (键入&#39;对象&#39;)

所以这是我的问题:如何传递作为行源的对象?

以下是带有按钮的DataGrid代码(省略其他列):

<DataGrid x:Name="PulsesDataGrid"
          Grid.Row="1"
          ItemsSource="{Binding ObservableUser.Pulses}"
          CanUserAddRows="False"
          CanUserSortColumns="True"
          AutoGenerateColumns="False"
          materialDesign:DataGridAssist.CellPadding="13 8 8 8"
          materialDesign:DataGridAssist.ColumnHeaderPadding="8"
          CanUserDeleteRows="False"
          CanUserReorderColumns="True"
          HorizontalAlignment="Stretch">
    <DataGrid.Columns>

        //... Other columns here

        <DataGridTemplateColumn Header="">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Style="{StaticResource MaterialDesignToolButton}"
                            Margin="10 0 0 0"
                            Command="{Binding ElementName=PulsesDataGrid, Path=DataContext.DeleteRowInDataGrid}"
                            CommandParameter="{Binding Path=DataContext}">
                        <materialDesign:PackIcon Kind="DeleteForever" />
                    </Button>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

绑定Command很好,因为它是用null参数调用的;(

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令将DataTemplate中的当前DataContext(这是行中显示的元素)绑定到CommandParameter:

CommandParameter="{Binding}"