Tôi có kiểu xem với thuộc tính Fields
là ObservableCollection<FieldVM>
. Trong quan điểm cho rằng sử dụng thuộc tính này, tôi có một ItemsControl
như vậy:DataTemplate.DataType thay thế trong Silverlight
...
<ItemsControl ItemsSource="{Binding Fields}" />
...
FieldVM
là một lớp trừu tượng, bởi các lớp học như vậy thực hiện như TextFieldVM
và EnumFieldVM
. Trong thời gian chạy, các FieldVM
-thực hiện này được thêm vào thuộc tính Fields
và tôi muốn chúng hiển thị trong chế độ xem của tôi với chế độ xem được liên kết.
Trong WPF, thực hiện điều này rất đơn giản, tôi luôn làm điều đó. Bạn chỉ cần làm điều này trong một từ điển tài nguyên thích hợp, và mọi thứ hoạt động như mong đợi:
<DataTemplate DataType="{x:Type vm:TextFieldVM}">
<v:TextFieldView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:EnumFieldVM}">
<v:EnumFieldView />
</DataTemplate>
Bây giờ, làm việc trong Silverlight cho lần đầu tiên, tôi mong đợi Tôi chỉ có thể làm điều tương tự, nhưng DataTemplate
không có một tài sản DataType
. Tôi bối rối. Silverlight-cách làm điều này là gì?
Cảm ơn đề xuất của bạn. Nó hoạt động, và tôi đánh dấu nó là câu trả lời, nhưng nó không thực sự là một giải pháp lý tưởng ... nó là một hack xấu xí hơn. Tôi không thể không cảm thấy như có một cách thích hợp hơn, giống như WPF để làm điều này. – Alex
Tôi đã thêm một tùy chọn bổ sung có thể đẹp hơn một chút: –
@ Alex: Tôi nhận ra rằng tôi đã trễ một năm để chơi game ở đây, nhưng tôi đã thực hiện một hành vi đính kèm 'BooleanVisibility' mà bạn có thể thấy thú vị. Bạn có thể tìm thấy phần ghi ở đây: http://www.executableintent.com/attached-behaviors-part-1-booleanvisibility/. Phần 2 của loạt bài này có một mẫu mã với một khung hành vi đính kèm và thực thi 'BooleanVisibility'. –