WPF 디자이너 오류 '유형 {0}이 직접 컨텐츠를 지원하지 않는다'를 어떻게 해결합니까?

StackOverflow https://stackoverflow.com/questions/356663

  •  21-08-2019
  •  | 
  •  

문제

다음 XAML (아래)은 리소스의 사용자 정의 컬렉션을 정의하고 사용자 정의 객체로 채우려고 시도합니다.

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

문제는 ''MyCustomCollection '유형의 디자이너에서 오류가 발생한다는 것입니다. MSDN에서 조언 한대로 ContentProperty를 설정하려고 시도했지만 무엇을 설정 해야하는지 알 수 없습니다. 내가 사용하는 커스텀 컬렉션 개체는 아래이며 매우 간단합니다. 나는 아이템, 항목 및 myCustomItem을 시도했지만 다른 시도를 생각할 수 없습니다.

<ContentProperty("WhatGoesHere?")> _
Public Class MyCustomCollection
    Inherits ObservableCollection(Of MyCustomItem)
End Class

내가 어디로 가고 있는지에 대한 단서는 감사하게받을 것입니다. 또한 WPF 객체 모델을 파는 방법에 대한 힌트를 얻기 위해 런타임에 어떤 속성이 노출되는지 확인할 수 있습니다.

문안 인사

라이언

도움이 되었습니까?

해결책

클래스의 내용을 나타내는 속성의 이름으로 ContentPropertyAttribute를 초기화해야합니다. 귀하의 경우, 관측형 수집에서 상속되기 때문에 항목 속성이 될 것입니다. 불행히도, 항목 속성은 읽기 전용이며 컨텐츠 속성에 세터가 있어야하므로 허용되지 않습니다. 따라서 항목 주변의 사용자 정의 래퍼 속성을 정의하고 속성에서 사용해야합니다.

public class MyCustomItem
{ }

[ContentProperty("MyItems")]
public class MyCustomCollection : ObservableCollection<MyCustomItem>
{
    public IList<MyCustomItem> MyItems
    {
        get { return Items; }
        set 
        {
            foreach (MyCustomItem item in value)
            {
                Items.Add(item);
            }
       }
    }
}

그리고 당신은 괜찮아야합니다. 예제가 VB에있을 때 C#에서 그렇게해서 미안하지만, 나는 정말로 VB를 빨고 간단한 일조차 얻을 수 없었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top