我有一个DataGrid
显示嵌套在外部父DataGrid中的子数据,我想复制所有选定的单元格(父级和子级)。
我在外部数据网格中包含了以下上下文菜单,该菜单成功复制了父数据:
<DataGrid Grid.Column="2" Name="dgCalls" ItemsSource="{Binding FoundCallsList}"
AutoGenerateColumns="False" Background="{DynamicResource WindowBackgroundBrush}"
IsReadOnly="True">
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Command="Copy">
<MenuItem.Icon>
<Image Source="..\resources\CopyHS.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
...
我尝试将此代码添加到内部DataGrid,但无济于事。如果我选择父数据和子数据并复制它,粘贴时我只获取外部数据。如果我只选择子数据,粘贴时我会得到一个空行。
内部网格的Xaml,如果它有帮助:
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding CallQueries}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Question" Width="450">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Stretch" HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding QueryQuestion}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
...
如何从内部(子)和外部(父)DataGrid复制数据?
答案 0 :(得分:0)
我会用两种方法来解决这个问题:
第一个:
尝试将上下文菜单创建为资源并将其(相同的实例)分配给父DataGrids和子DataGrids,这是基于我假设MS Window的默认行为是复制关联项的选择。
第二个:
如果第一个不起作用。为ContextMenu创建一个行为,它提取PlacementTarget(即你的父DataGrid),然后运行它的Items(即Rows)并从中提取DataGrid(你的子DataGrid)
这可以通过使用 VisualTreeHelper 或从他们自己的元素公开的属性或两者的组合来实现。