どのように私はWPFデザイナエラー「直接コンテンツをサポートしていませんタイプ{0}」解決しますか。 '?
-
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を初期化する必要があります。あなたがのObservableCollectionから継承するため、あなたの場合には、それがItemsプロパティになります。残念ながら、Itemsプロパティは読み取り専用で、Contentプロパティはセッターを持っていなければならないので、それは、許可されていません。ですから、アイテムの周りにカスタムラッパープロパティを定義し、あなたの属性にそれを使用する必要があります - そうのように:
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);
}
}
}
}
そして、あなたはすべての権利でなければなりません。 C#で、あなたの例では、VBであるとき、私は本当にVBで吸うととにかく、それを変換するためのスナップですので...右も、このような単純なものを得ることができなかったことをやって申し訳ありません - 。お役に立てば幸いです。