在哪里创建参数化ViewModel?

Kug*_*gel 11 wpf mvvm viewmodel

我最近参数化了我的ViewModel的构造函数.在此之前,我在窗口中这样做:

<Window.DataContext>
    <vm:MyViewModel />
</Window.DataContext>
Run Code Online (Sandbox Code Playgroud)

该框架为我实例化了ViewModel.

我知道我可以在代码中设置DataContext,但我更喜欢XAML方式,因此设计人员可以在设计时显示我的测试数据.

这可能吗?

Qua*_*ter 20

如果要指定构造函数参数,请使用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>
Run Code Online (Sandbox Code Playgroud)

  • 如果参数是类类型? (4认同)

Hen*_*man 12

我不知道如何传递一个contructor参数,我认为它无法完成(但如果有人证明我错了会很好).

您可以做的是在ViewModel上设置属性,如

<Window.DataContext>
    <vm:MyViewModel  MyProperty="Hello" />
</Window.DataContext>
Run Code Online (Sandbox Code Playgroud)

  • 如果parameter是自定义类类型,那么如何用xaml编写? (3认同)