Где создать параметризованную ViewModel? - PullRequest
10 голосов
/ 04 августа 2010

Я недавно параметризовал свой конструктор ViewModel. До этого я делал это в своем окне:

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

Фреймворк создал для меня ViewModel.

Я знаю, что могу установить DataContext в коде, но я бы предпочел способ XAML, чтобы дизайнер мог отображать мои тестовые данные при проектировании.

Возможно ли это?

Ответы [ 2 ]

18 голосов
/ 04 августа 2010

Используйте ObjectDataProvider , если вы хотите указать параметры конструктора:

<Window.DataContext>
    <ObjectDataProvider ObjectType="vm:MyViewModel"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">
        <ObjectDataProvider.ConstructorParameters>
            <sys:String>A string parameter</sys:String>
            <sys:Int32>42</sys:Int32>
        </ObjectDataProvider.ConstructorParameters>
    </ObjectDataProvider>
</Window.DataContext>
11 голосов
/ 04 августа 2010

Я понятия не имею, как передать параметр contructor, я думаю, что это невозможно сделать (но было бы хорошо, если бы кто-то доказал, что я неправ).

То, что вы можете сделать, это установить свойства вашей ViewModel, как в

<Window.DataContext>
    <vm:MyViewModel  MyProperty="Hello" />
</Window.DataContext>
...