WPF:ClipboardContentBinding不适用于高级数据网格列

mitkmikd  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(250)

我正在尝试导出我的DataGrid(名称:myDataGrid)到.csv -但遇到了一些问题。<TextColumn>按预期导出,但我的<DataTemplate><ComboBox><wpfTool:DateTimePicker>没有。它们的单元格最终为空。
下面是两列的XAML
第一个
以及我的“导出到CSV”方法:

myDataGrid.SelectAllCells();
myDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, myDataGrid);
string result1 = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
string result2 = (string)Clipboard.GetData(DataFormats.Text);
myDataGrid.UnselectAllCells();
System.IO.StreamWriter file1 = new("My:\File\Path\test.xls");
file1.WriteLine(result2.Replace(',', ' '));
file1.Close();

我一直在尝试设置ClipboardContentBinding事件,但无法让它工作。我正在使用MVVM,但也可以使用代码背后的解决方案。
(我无法实施Bind ClipboardContentBinding to DisplayMemberPath处已接受答案中提供的解决方案)

cngwdvgl

cngwdvgl1#

我遇到了同样的问题,经过几个小时的搜索,我找到了以下解决方案:

ClipboardContentBinding="{Binding DetectionTimestamp}"

我使用DataBinding,所以我的XAML更改为:

<DataGridTemplateColumn  SortMemberPath="DetectionTimestamp" 
                    Header="Date" 
                    CanUserSort="true" 
                    ClipboardContentBinding="{Binding DetectionTimestamp}">
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <TextBlock>
                                <TextBlock.Text>
                                    <Binding Path="DetectionTimestamp"/>
                                </TextBlock.Text>
                            </TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

现在剪贴板包含所有单元格数据,并且我的CSV导出工作正常。

相关问题