Как мне инкапсулировать WPF ViewModel / View UserControl в качестве элемента управления - PullRequest
0 голосов
/ 14 декабря 2010

Я создал пару WPF UserControl View / ViewModel: представление XAML обрабатывает макет и привязки, а ViewModel обрабатывает логику в соответствии с рекомендуемым шаблоном MVVM.

Я хотел быбыть в состоянии повторно использовать это как элемент управления.

Как скрыть / инкапсулировать ViewModel, связанную с представлением, чтобы я мог использовать элемент управления так же, как стандартный элемент управления [такой как кнопка]?

т.е. как скрыть модель представления элемента управления?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

зависит от того, как вы связываете класс ViewModel с элементом управления.если вам так:

 YourControl()
{
   DataContex = new ViewModel();
}

, тогда я не вижу никаких проблемдобавить ссылку на ваш элемент управления и использовать его.

0 голосов
/ 04 января 2011

Вы можете создать свою ViewModel как StaticResource в вашем XAML. Проблема с установкой DataContext для вашей ViewModel заключается в том, что вы не можете использовать его, вы больше не можете использовать свой DataContext из окна или страницы, на которой вы используете элемент управления.

В вашем XAML объявите вашу ViewModel:

<myNS:MyViewModel x:Key="ViewModel />

Ссылка на вашу модель представления в вашем XAML:

<TextBlock Text="{Binding Source={StaticResource ViewModel}, Path=TextToBind}" />

В вашем коде Позади вы можете быстро получить доступ и инициализировать, я обычно делаю свойство для удобной ссылки на мою модель представления.

 private MyViewModel viewModel
 {
    get { return this.Resources["ViewModel"] as MyViewModel; }
 }
...