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