1
我有一个设计师究竟是如何设计的VisualStudio
WinForms
。复制粘贴UIElement(FrameworkElement)
我拖动&下降控制(FrameworkElements
)(从工具箱与控件)。控制器存储在Grid
Panel
中。
其实我要为UIElement
(s)实现复制/粘贴功能。
我把选定的控制Clipboard
private readonly DataObject _dataObject = new DataObject();
的复制方法它的工作好,它存储在剪贴板中的元素。
private void CopyUIElementToClipboard(FrameworkElement element) {
_dataObject.SetData(element);
Clipboard.SetDataObject(_dataObject);
}
但在粘贴我有问题。我无法从剪贴板中检索元素。
public void PasteUIElement() {
var control = _dataObject.GetData(DataFormats.***); //What type should i give it here ?
//I tried all formats from DataFormats via this. But all returns NULL.
TryAll();
//Continue doing other stuff
}
//试图里面DataFormats
所有格式,但都返回NULL
private void TryAll() {
var qBitmap = _dataObject.GetData(DataFormats.Bitmap);
var qCommaSeparatedValue = _dataObject.GetData(DataFormats.CommaSeparatedValue);
var qDib = _dataObject.GetData(DataFormats.Dib);
var qEnhancedMetafile = _dataObject.GetData(DataFormats.EnhancedMetafile);
var qFileDrop = _dataObject.GetData(DataFormats.FileDrop);
var qHtml = _dataObject.GetData(DataFormats.Html);
var qLocale = _dataObject.GetData(DataFormats.Locale);
var qMetafilePicture = _dataObject.GetData(DataFormats.MetafilePicture);
var qOemText = _dataObject.GetData(DataFormats.OemText);
var qPalette = _dataObject.GetData(DataFormats.Palette);
var qPenData = _dataObject.GetData(DataFormats.PenData);
var qRiff = _dataObject.GetData(DataFormats.Riff);
var qRtf = _dataObject.GetData(DataFormats.Rtf);
var qSerializable = _dataObject.GetData(DataFormats.Serializable);
var qStringFormat = _dataObject.GetData(DataFormats.StringFormat);
var qSymbolicLink = _dataObject.GetData(DataFormats.SymbolicLink);
var qText = _dataObject.GetData(DataFormats.Text);
var qTiff = _dataObject.GetData(DataFormats.Tiff);
var qUnicodeText = _dataObject.GetData(DataFormats.UnicodeText);
var qWaveAudio = _dataObject.GetData(DataFormats.WaveAudio);
var qXaml = _dataObject.GetData(DataFormats.Xaml);
var qXamlPackage = _dataObject.GetData(DataFormats.XamlPackage);
}
我怎样才能检索Clipboard
的FrameworkElement
元素?
我试图只将我的元素的名称存储到剪贴板并将其粘贴到记事本中。它工作正常。
private void CopyUIElementToClipboard(FrameworkElement element) {
var elementName = element.Name;
_dataObject.SetData(DataFormats.Text, elementName, true);
Clipboard.Clear();
Clipboard.SetDataObject(_dataObject);
}
但我的项目中,如何让事情粘贴做,我在一个小麻烦。
也许我应该以另一种格式(Serializable
,或其他东西)
任何建议将受到欢迎它存储在Clipboard
。
链接到XamlWriter类:http:// msdn。microsoft.com/en-us/library/system.windows.markup.xamlwriter.aspx – meorfi