Where to create parametrized ViewModel?

2020-02-23 08:44发布

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?

2条回答
Bombasti
2楼-- · 2020-02-23 09:13

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>
查看更多
手持菜刀,她持情操
3楼-- · 2020-02-23 09:18

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>
查看更多
登录 后发表回答