2010-08-03 31 views
7

Gần đây tôi đã parametrized contructor ViewModel của tôi. Trước đó, tôi đã thực hiện điều này trong cửa sổ của mình:Nơi để tạo ViewModel parametrized?

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

Framework này đã khởi tạo ViewModel cho tôi.

Tôi biết tôi có thể đặt DataContext bằng mã nhưng tôi thích cách XAML hơn để nhà thiết kế có thể hiển thị dữ liệu thử nghiệm của tôi khi thiết kế.

Điều này có khả thi không?

Trả lời

14

Sử dụng một ObjectDataProvider nếu bạn muốn xác định các thông số constructor:

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

Cảm ơn bạn, tôi biết nó có thể được thực hiện. – Kugel

10

Tôi không biết làm thế nào để vượt qua một tham số contructor, tôi nghĩ rằng nó không thể được thực hiện (nhưng nó sẽ được tốt đẹp nếu ai đó chứng minh tôi sai).

Những gì bạn có thể làm là thiết lập các thuộc tính trên ViewModel của bạn, như trong

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

tiêm tài sản, tốt và đơn giản. – Kugel

+0

Đơn giản và rõ ràng! – objecto

Các vấn đề liên quan