<Window.Resource>
<ResourceDictionary>
<local:SomeResourceWithObsCollection x:Key="MyItemWithCollection">
<local:SomeClass.Instance /> <!-- THIS DOES NOT WORK -->
</local:SomeResourceWithObsCollection>
</ResourceDictionary>
</Window.Resources>
我不知道如何让这条线工作......我尝试过做<x:Static SomeClass.Instance />
,但这也是不允许的。
[ContentProperty("TheItems")]
public class SomeResourceWithObsCollection
{
public class SomeResourceWithObsCollection()
{
TheItems = new ObservableCollection<IMyInterface>();
}
public ObservableCollection<IMyInterface> TheItems { get; set; }
}
public class SomeClass : IMyInterface
{
private static SomeClass _instance = new SomeClass();
private SomeClass() { }
public SomeClass Instance { get { return _instance; } }
}
答案 0 :(得分:2)
您现在无法在XAML中执行您要求执行的操作。也许未来版本的XAML会解释这一点。你必须在后面的代码中执行它,这是一个例子:
答案 1 :(得分:1)
我能建议的最接近的是CompositeCollection和使用ListBoxItems
(或其他等效物)的组合来包装静态内容(因为我相信你只能使用静态内容将静态内容拉入XAML) {x:Static}
标记扩展名)
这可以在XAML中使用,如下所示:
<ListBox>
<ListBox.ItemsSource>
<CompositeCollection>
<ListBoxItem Content="{x:Static local:Example.One}" />
<ListBoxItem Content="{x:Static local:Example.Two}" />
</CompositeCollection>
</ListBox.ItemsSource>
</ListBox>