【问题标题】:Where to create parametrized ViewModel?在哪里创建参数化的 ViewModel?
【发布时间】:2011-03-24 22:49:48
【问题描述】:

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

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

框架为我实例化了 ViewModel。

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

这可能吗?

【问题讨论】:

    标签: wpf mvvm viewmodel


    【解决方案1】:

    我不知道如何传递构造函数参数,我认为它无法完成(但如果有人证明我错了,那就太好了)。

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

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

    【讨论】:

    • 如果参数是自定义类类型,那么xaml怎么写?
    【解决方案2】:

    如果要指定构造函数参数,请使用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>
    

    【讨论】:

    • 如果参数是类类型?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多