我想获取所选的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>
答案 0 :(得分:1)
您的ManualDataTable
集合中的数据已绑定到ItemsSource
的{{1}}属性和DataGrid
属性SelectedRow
属性。如果您的SelectedItem
属性与SelectedRow
集合中的项目类型相同,则可以使用它来引用ManualDataTable
中的所选项目。
因此,您无需在DataGrid
中找到某个列,因为您可以正常访问您的类的属性...所以您可以简单地执行此操作,而不是使用三行代码(假设您的班级中有DataGridRow
属性):
Id