Краткий ответ: вы не можете. Решение здесь заключается в том, чтобы сохранить файл где-нибудь и сохранить путь к файлу в сеансе, затем прочитать путь назад из сеанса и перечитать файл.
Кроме того, с одной стороны, делая так много вещей, возможно, не лучший дизайн, но YMMV ...
См. эту статью от Джастина Тейлора для обходного пути.
Обновление
К сожалению, упомянутый блог больше не доступен. Я попытался объяснить процесс в другом SO-ответе. Его можно найти здесь здесь .
Если (как и я) у вас отвращение к уродливым сложным выражениям связывания, вот простое решение этой проблемы с выделенным кодом. Этот подход все еще позволяет вам сохранять чистые объявления команд в вашем XAML.
XAML:
<ContextMenu ContextMenuOpening="ContextMenu_ContextMenuOpening">
<MenuItem Command="Save"/>
<Separator></Separator>
<MenuItem Command="Close"/>
...
Код позади:
private void ContextMenu_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
foreach (var item in (sender as ContextMenu).Items)
{
if(item is MenuItem)
{
//set the command target to whatever you like here
(item as MenuItem).CommandTarget = this;
}
}
}