У меня нет Django
способа сделать это на первый взгляд, но у меня есть быстрое Javascript
решение, которое вы можете иметь гораздо больше контроля.
function redirect(btn, url) {
btn.on('click', function () {
window.location.href = url; // A string
})
}
var btn = <your btn>; // Use JQuery to get element as an ID
var url = <redirect url>;
redirect(btn, url);
Я нашел отличную статью , которая должна делать именно то, что вам нужно.
ОБНОВЛЕНИЕ
Мне удалось получить код из этой статьи, работающий в WPF с небольшой настройкой, ниже приведены изменения, которые вам необходимо внести.
Измените все ссылки из System.Windows.Forms.IDataObject на System .Windows.IDataObject
В конструкторе OutlookDataObject измените
FieldInfo innerDataField = this.underlyingDataObject.GetType().GetField("innerData", BindingFlags.NonPublic | BindingFlags.Instance);
на
FieldInfo innerDataField = this.underlyingDataObject.GetType().GetField("_innerData", BindingFlags.NonPublic | BindingFlags.Instance);
Измените все вызовы DataFormats.GetFormat на DataFormats.GetDataFormat
Измените реализацию SetData с
public void SetData(string format, bool autoConvert, object data)
{
this.underlyingDataObject.SetData(format, autoConvert, data);
}
на
public void SetData(string format, object data, bool autoConvert)
{
this.underlyingDataObject.SetData(format, data, autoConvert);
}
С этими изменениями я смог заставить его сохранять сообщения в файлы, как это сделала статья. Извините за форматирование, но нумерованные / маркированные списки не работают с фрагментами кода.
Я нашел, что много решений, предлагающих Вас, использует “FileGroupDescriptor” для всех имен файлов и “FileContents” на объекте DragEventArgs получить данные каждого файла. “FileGroupDescriptor” хорошо работает для названий электронного письма, но “FileContents” возвращает пустой указатель, потому что реализация IDataObject в .NET не может обработать объект IStorage, который возвращается COM.
у David Ewen есть большое объяснение, превосходный образец и загрузка кода, которая работает отлично в http://www.codeproject.com/KB/office/outlook_drag_drop_in_cs.aspx .
В Вашем Xaml необходимо настроить Событие:
<TextBlock
Name="myTextBlock"
Text="Drag something into here"
AllowDrop="True"
DragDrop.Drop="myTextBlock_Drop"
/>
, После того как Вы Установили AllowDrop = Верный и Набор, Вы отбрасываете событие затем, переходят к коду позади и настраивают Ваше событие:
private void myTextBlock_Drop(object sender, DragEventArgs e)
{
// Mark the event as handled, so TextBox's native Drop handler is not called.
e.Handled = true;
Stream sr;
//Explorer
if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
//Do somthing
//Email Message Subject
if (e.Data.GetDataPresent("FileGroupDescriptor"))
{
sr = e.Data.GetData("FileGroupDescriptor") as Stream;
StreamReader sr = new StreamReader(sr2);//new StreamReader(strPath, Encoding.Default);
//Message Subject
string strFullString = sr.ReadToEnd();
}
}
, Если Вы хотите сломать его далее, можно использовать: FILEDESCRIPTOR или FILECONTENTS как схема в следующем статья
Ваша другая опция должны наброситься на перспективы MS Office Primary Interop Assemblies и повредить сообщение независимо тот путь.
Я думаю , Перетаскивание Стиля Shell в.NET (WPF и WinForms) может помочь Вам. После того как можно ответить для перетаскивания отбрасывания с помощью COM-интерфейсов, необходимо смочь вытащить данные из перспективы.