Есть ли способ закрыть Usercontrol из ViewModel в WPF

Вот как я запускаю свои команды. У этого кода есть все, что вам нужно в значительной степени

from subprocess import Popen, PIPE
cmd = "ls -l ~/"
p = Popen(cmd , shell=True, stdout=PIPE, stderr=PIPE)
out, err = p.communicate()
print "Return code: ", p.returncode
print out.rstrip(), err.rstrip()
-1
задан UUser 4 March 2019 в 15:57
поделиться

1 ответ

Ответ таков: вам не следует закрывать свои пользовательские элементы управления (если они не используются в качестве отдельных диалогов, и это не ваш случай, согласно вашему комментарию выше).

Все изменения в видимости пользовательских элементов управления касаются навигации. Как только вы логически перейдете к функции, включающей другой пользовательский контроль, вам придется скрыть старый и показать новый элемент управления. Обычно это делается с помощью выбора шаблона:

Два шаблона, один на UserControl, каждый из которых связан с соответствующей ViewModel:

<DataTemplate DataType="{x:Type ViewModels:FirstViewModel}">
    <controls:FirstControl />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel:SecondViewModel}">
    <controls:SecondControl />
</DataTemplate>

Затем позже мы объявляем заполнитель:

<ContentControl Content="{Binding ViewModelSelector}" />
[ 1113] Как только свойство ViewModelSelector вернет FirstViewModel, наш заполнитель покажет FirstControl. Если мы перейдем к свойству ViewModelSelector в SecondViewModel, наш заполнитель автоматически заменит FirstControl на SecondControl и наоборот.

0
ответ дан Yury Schkatula 4 March 2019 в 15:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: