Tôi ràng buộc một textbox cho một đối tượng, như vậy:Làm thế nào để sử dụng d: DesignInstance với các kiểu không có hàm tạo mặc định?
<TextBlock d:DataContext="{d:DesignInstance ViewModel:TaskVM }"
Text="{Binding Title}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">
</TextBlock>
Bây giờ tôi đang tự hỏi làm thế nào để làm cho nó hiển thị dữ liệu mô hình trong thiết kế. Tôi đã thử làm một điều gì đó như thế:
<TextBlock Text="{Binding Path=Title}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">
<d:DesignProperties.DataContext>
<ViewModel:TaskVM Title="Mock"/>
</d:DesignProperties.DataContext>
</TextBlock>
Tuy nhiên, vì TaskVM không có ctor mặc định, tôi nhận được "Không có hàm tạo mặc định".
Tôi biết rằng khi tôi sử dụng d:DataContext="{d:DesignInstance ViewModel:TaskVM }"
, nó sẽ tạo loại dữ liệu giả. Có cách nào cho tôi để thiết lập các thuộc tính của loại giả này?
Cảm ơn!
Tôi thích ý tưởng đó :). Kế thừa sẽ cho phép tôi bỏ qua việc tạo lại tất cả các thuộc tính. Tôi vẫn thích có một cách tích hợp để thao tác đối tượng giả tạo mà WPF tạo ra. Nó DOES tạo ra một đối tượng giả, phải không? Nó nói trong tài liệu MSDN: d: IsDesignTimeCreatable Trong d: phần mở rộng đánh dấu DesignInstance, xác định rằng cá thể thiết kế được tạo ra từ kiểu của bạn, thay vì kiểu thay thế do nhà thiết kế tạo ra. – VitalyB
@VitalyB - Có, bạn đã đúng.Có vẻ như bạn có thể đặt 'd: IsDesignTimeCreatable' thành' False' và một loại thay thế sẽ được tạo cho bạn trong thời gian chạy (sử dụng loại TaskVM của bạn làm "hình dạng"). –
Chính xác. Đó là khá khó khăn mà tôi không thể thiết lập các thuộc tính của loại thay thế. – VitalyB