Подпишись на наш Twitter

Быть в курсе появления новых статей!

Вы можете перетаскивать интерфейсы пользовательского интерфейса между приложениями WPF используя drag and drop. Для того чтобы это сделать надо прочитать XAML представление из логического дерева для части которую вы хотите перетащить и указать XAML как формат данных.

Пример ниже показывает, как перетащить StackPanel и все что в ней из одного приложения в другое.

На отправляющей стороне XamlWriter объект сохраняет XAML представление в виде строки.

private void StackPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    string xaml = XamlWriter.Save(e.Source);
    DataObject data = new DataObject(DataFormats.Xaml, xaml);

    DragDrop.DoDragDrop((DependencyObject)e.Source, data, DragDropEffects.Copy);
}

На принимающей стороне используется XamlReader для загрузки данных в приложение. В этом примере мы установили StackPanel как главный элемент для Window в которое мы перетаскиваем.

private void Window_Drop(object sender, DragEventArgs e)
{
    string xaml = (string)e.Data.GetData(DataFormats.Xaml);
    this.Content = XamlReader.Load(new XmlTextReader(new StringReader(xaml)));
}

Оригинал: #706 – Dragging User Interface Elements Between Applications




Дата публикации: 06.12.2012 17:57

Ярлыки: Drag and Drop, Events, WPF, XAML