XAML sau (bên dưới) xác định một tập hợp tùy chỉnh trong tài nguyên và cố gắng điền nó với một đối tượng tùy chỉnh;Làm cách nào để giải quyết lỗi thiết kế WPF 'Loại {0} không hỗ trợ nội dung trực tiếp'. '?
<UserControl x:Class="ImageListView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="300" Height="300"
xmlns:local="clr-namespace:MyControls" >
<UserControl.Resources>
<local:MyCustomCollection x:Key="MyKey">
<local:MyCustomItem>
</local:MyCustomItem>
</local:MyCustomCollection>
</UserControl.Resources>
</UserControl>
Vấn đề là tôi gặp lỗi trong trình thiết kế 'Loại' MyCustomCollection 'không hỗ trợ nội dung trực tiếp'. Tôi đã cố gắng thiết lập ContentProperty như được khuyên trong MSDN nhưng không thể tìm ra những gì để thiết lập nó. Các đối tượng thu tùy chỉnh mà tôi sử dụng là dưới đây và rất đơn giản. Tôi đã thử Item, Items và MyCustomItem và không thể nghĩ ra những thứ khác để thử.
<ContentProperty("WhatGoesHere?")> _
Public Class MyCustomCollection
Inherits ObservableCollection(Of MyCustomItem)
End Class
Bất kỳ manh mối nào về nơi tôi gặp sai sẽ được biết ơn. Ngoài ra gợi ý về cách đào sâu vào mô hình đối tượng WPF để xem những thuộc tính nào được phơi bày trong thời gian chạy, tôi cũng có thể tìm ra nó theo cách đó.
Trân
Ryan
Có vẻ tốt, nhưng là câu hỏi về setter của bạn ở đó. Nó sẽ không chỉ liên tục thêm vào bộ sưu tập và gây ra một ngoại lệ? Ngoài ra, tại sao IList và không phải ObservableCollection? Cảm ơn –
Không, nó sẽ chỉ thêm nhiều mục như bạn có trong biến giá trị đến - và đó là những giá trị bạn xác định trong XAML. Và đó là IList, vì đó là loại thuộc tính Items. Hãy nhớ rằng, trình bao bọc dành cho thuộc tính Items, không dành cho toàn bộ lớp. –
Boyan
Cảm ơn, đó là lời khuyên tuyệt vời. Nhiều đánh giá cao. –