获取所选的datagrid行,即点击mvvm

时间:2014-06-30 11:49:41

标签: wpf mvvm icommand relaycommand

我想获取所选的datagrid行,即点击mvvm.i有下面的代码我想在MVVM中使用它,但不能这样做。请让我知道如何在mvvm中转换3行以下使用中继命令和命令

DataRowView dataRow = (DataRowView)dgProjectComponents.SelectedItem;
            int index = dgProjectComponents.CurrentCell.Column.DisplayIndex;
            string ProjectComponentID = Convert.ToString(dataRow.Row.ItemArray[2].ToString());

**Xaml of datagrid:**


<DataGrid SelectedItem="{Binding SelectedRow}" Background="{Binding ElementName=gd,Path=Background}" ItemsSource="{Binding ManualDataTable}"   x:Name="dgProjectComponents">
                                                <DataGrid.Columns>
                                                    <DataGridTemplateColumn Width="50" IsReadOnly="True">
                                                        <DataGridTemplateColumn.CellTemplate>
                                                            <DataTemplate >
                                                                <TextBlock  Height="10" Width="10" Background="{Binding ColorDefinition}" ></TextBlock>
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
                                                    <DataGridTextColumn Binding="{Binding ProjectComponentID}" Visibility="Hidden" Width="100" Header="ProjectComponentID" />
                                                    <DataGridTextColumn Binding="{Binding Title}" IsReadOnly="True" Width="140" />



                                                    <DataGridTemplateColumn Width="50">
                                                        <DataGridTemplateColumn.CellTemplate>
                                                            <DataTemplate>
                                                                <TextBlock><Hyperlink Command="{Binding Path=DataContext.DelProjectComponent,ElementName=ProjectTabWindow}"><Image Source="/img/Close.png"   x:Name="imgProjectComponentDelete" Height="15" Width="20"></Image></Hyperlink></TextBlock>
                                                            </DataTemplate>
                                                        </DataGridTemplateColumn.CellTemplate>
                                                    </DataGridTemplateColumn>
                                                </DataGrid.Columns>
                                            </DataGrid>
                                            </DataGrid>

1 个答案:

答案 0 :(得分:1)

您的ManualDataTable集合中的数据已绑定到ItemsSource的{​​{1}}属性和DataGrid属性SelectedRow属性。如果您的SelectedItem属性与SelectedRow集合中的项目类型相同,则可以使用它来引用ManualDataTable中的所选项目。

因此,您无需在DataGrid中找到某个列,因为您可以正常访问您的类的属性...所以您可以简单地执行此操作,而不是使用三行代码(假设您的班级中有DataGridRow属性):

Id