Where to create parametrized ViewModel?

感情迁移 提交于 2019-11-29 02:54:09

问题


I have recently parametrized my ViewModel's contructor. Before that, I was doing this in my window:

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

The framework instantiated the ViewModel for me.

I know I can set DataContext in code but I would prefer a XAML way so designer can display my test data when designing.

Is this possible?


回答1:


Use an ObjectDataProvider if you want to specify constructor parameters:

<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>



回答2:


I have no idea how to pass a contructor-parameter, I think it can't be done (but it would be nice if someone proved me wrong).

What you can do is set properties on your ViewModel, as in

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


来源:https://stackoverflow.com/questions/3400506/where-to-create-parametrized-viewmodel

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!