【发布时间】:2011-03-24 22:49:48
【问题描述】:
我最近参数化了我的 ViewModel 的构造函数。在此之前,我在我的窗口中这样做:
<Window.DataContext>
<vm:MyViewModel />
</Window.DataContext>
框架为我实例化了 ViewModel。
我知道我可以在代码中设置 DataContext,但我更喜欢 XAML 方式,这样设计人员可以在设计时显示我的测试数据。
这可能吗?
【问题讨论】:
我最近参数化了我的 ViewModel 的构造函数。在此之前,我在我的窗口中这样做:
<Window.DataContext>
<vm:MyViewModel />
</Window.DataContext>
框架为我实例化了 ViewModel。
我知道我可以在代码中设置 DataContext,但我更喜欢 XAML 方式,这样设计人员可以在设计时显示我的测试数据。
这可能吗?
【问题讨论】:
我不知道如何传递构造函数参数,我认为它无法完成(但如果有人证明我错了,那就太好了)。
您可以在 ViewModel 上设置属性,如
<Window.DataContext>
<vm:MyViewModel MyProperty="Hello" />
</Window.DataContext>
【讨论】:
如果要指定构造函数参数,请使用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>
【讨论】: