MVVM DataTemplate и непустой конструктор модели представления - PullRequest
4 голосов
/ 05 июля 2011

У меня есть ниже DataTemplate:

    <DataTemplate DataType="{x:Type vm:MyViewModel}">
        <views:MyView/>
    </DataTemplate>

Дело в том, что моя модель представления имеет конструктор, который принимает параметры, которые автоматически вводятся контейнером (единство). Однако, чтобы DataTemplate работал, MyViewModel должен иметь конструктор без параметров.

Есть ли другой способ, которым я могу вставить соответствующие значения в мою модель представления, если я использую DataTemplate для ее создания?

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Я не думаю, что View должен создавать ViewModels.

ViewModels должен создавать другие ViewModels, а View просто определяет, как рисовать ViewModel.

Например, ParentViewModel может иметь свойство с именем ChildViewModel.ParentView будет содержать ContentControl, содержимое которого привязано к ChildViewModel, а DataTemplate будет использоваться для указания приложению рисовать ChildViewModel как ChildView.

С учетом сказанного,как ваш View в настоящее время создает вашу ViewModel?Вы всегда можете добавить DependencyProperties в ваш View и построить вашу ViewModel в загруженном событии View, используя эти свойства.

2 голосов
/ 05 июля 2011

Возможно, вы захотите рассмотреть возможность использования инфраструктуры MVVM, такой как Caliburn.Micro , и сначала использовать ViewModel.

...