2015-07-02 8 views
1

В настоящее время я изучаю WPF и MVVM самостоятельно.Как узнать, когда мы закончили с DataContext?

У меня есть диалоговое окно, которое создается в моем XAML, используя

<Window.DataContext> 
    <vm:PreferencesViewModel /> 
</Window.DataContext> 

Конструктор PreferencesViewModel() вызывает LoadConfig() моего объекта PreferencesModel (загружает XML-файл). То, что я хотел бы сделать, это вызвать PreferencesModel :: SaveConfig() из PreferencesViewModel, когда нажата кнопка «ОК» моего диалогового окна, но я не могу, так как у меня нет доступа к объекту PreferencesViewModel, автоматически созданному <vm:PreferencesViewModel /> , Я бы сделал это в деструкторе, но GC не уничтожит объект.

Есть ли способ узнать, когда XAML выполняется с объектом PreferencesViewModel?

ответ

0

... но я не могу, так как у меня нет доступа к PreferencesViewModel ...

Дайте ему имя и доступ к нему в коде.

<vm:PreferencesViewModel x:Name="MyVM" /> 

Или извлечь его из DataContext в коде позади:

var myVM = (PreferencesViewModel) DataContext; 
+0

О, я не знаю, что мы могли бы дать название такого рода XAML элемента. Благодаря! –

+0

@PierreFournier Я рассказываю о бессмысленном способе общения с MVVM в своем блоге на статью под названием [Xaml: ViewModel Main Page Instantiation and Loading Strategy for Easier Binding] (http://omegacoder.com/?p=1017), которая может помочь. – OmegaMan

Смежные вопросы