我有一個允許用戶添加行的wpf數據網格。我需要添加一個功能,用戶可以在其中複製數據行,並在粘貼時將其添加爲新行。我可以複製(Ctrl + C)一行,但在粘貼(Ctrl + V)時,所有項目都粘貼到行的第一個單元格上。我如何將其粘貼到該行的每個單元格中。複製DataGrid行並將其粘貼到WPF數據網格中的新行
<DataGrid Name="grdTest" HorizontalAlignment="Left" Grid.Row="0" Margin="5,5,0,0" VerticalAlignment="Top" Height="426" Width="1034"
AlternationCount="2" ItemsSource="{Binding TestsList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" >
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Is Active" Binding="{Binding Path=IsActive,Mode=TwoWay}">
<DataGridTextColumn Width="90">
<DataGridTextColumn.Binding>
<Binding Path="TestName" Mode="TwoWay">
<Binding.ValidationRules>
<localVal:ValidationRules/>
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
<DataGridTextColumn.Header>
<TextBlock Width="80" Text="Test Name" ToolTip=""/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn.Binding>
<Binding Path="TestType" Mode="TwoWay">
<Binding.ValidationRules>
<localVal:ValidationRules/>
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
<DataGridTextColumn.Header>
<TextBlock Width="80" Text="Test Type" ToolTip=""/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
這是我這麼遠:
private void grdTest_CopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e)
{
copiedItem = (Test)e.Item;
}
private void grdTest_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.V && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
if (App.ViewModel.UpdatedListCommand.CanExecute(null))
{
App.ViewModel.UpdatedListRowCommand.Execute(copiedItem);
}
}}}
我更新的視圖模型的列表,並調用NotifyProperty改變。該列表已更新,但是,它不會反映在用戶界面中。該行(我複製/粘貼值)似乎是空的,但是當我選擇一個單元格時,該值出現。所以基本上它被正確設置,但一些不顯示在數據網格中。
嗨,你找到了解決方案嗎?如果你發現,你可以請更新作爲答案。我也在尋找完全相同問題的解決方案。謝謝 – batmaci 2015-03-05 14:44:11