Silverlight 4.0 使用静态资源填充XAML中ObservableCollection类型的属性
我创建了一个包含ObservableCollection类型属性的类。我试图在XAML中创建该类的实例,并用成员填充该属性。我一直得到一个异常,即类T不能转换为ObservableCollection,但只有当我试图用声明为静态资源的元素填充列表时,才会发生此异常 有人知道为什么吗 代码如下:Silverlight 4.0 使用静态资源填充XAML中ObservableCollection类型的属性,silverlight-4.0,c#-4.0,observablecollection,staticresource,Silverlight 4.0,C# 4.0,Observablecollection,Staticresource,我创建了一个包含ObservableCollection类型属性的类。我试图在XAML中创建该类的实例,并用成员填充该属性。我一直得到一个异常,即类T不能转换为ObservableCollection,但只有当我试图用声明为静态资源的元素填充列表时,才会发生此异常 有人知道为什么吗 代码如下: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmln
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mseg="clr-namespace:SegApp.Model.DataEntities.Segments;assembly=SegApp.Model.Silverlight">
<mseg:Dot xKey="d1"/>
<mseg:Dot xKey="d2"/>
<mseg:Dot xKey="d3"/>
<mseg:Dot xKey="d4"/>
<mseg:Segment xKey="seg1">
<mseg:Segment.Dots>
<StaticResource ResourceKey="d1"/>
<StaticResource ResourceKey="d2"/>
<StaticResource ResourceKey="d3"/>
<StaticResource ResourceKey="d4"/>
</mseg:Segment.Dots>
</mseg:Segment>
</ResourceDictionary>
类别定义为:
public class Segment : Part
{
public ObservableCollection<Dot> Dots { get; set; }
public Segment()
{
Dots = new ObservableCollection<Dot>();
}
}
例外情况是:
无法创建类型为bla.bla.bla.Dot的对象
转换为类型
System.Collections.ObjectModel.ObservableCollection'1[bla.bla.bla.Dot]
有什么想法吗?正如您的代码一样,集合中的每个元素都必须是一个点,而不是一个资源。。。 xaml代码中列表的每个条目都必须类似于 或者试试看 一些价值 或 {staticResource xxx} 但仍然存在一个问题。第一种语法可以,第二种语法可以在Dot有简单内容的情况下使用,但第三种语法不能运行:tag表示创建Dot的实例。StaticResource意味着创建..的实例。。给它一把钥匙。 所以最后一个语法肯定不起作用,因为您可以用来自资源的实例替换由标记创建的实例
但是试试看。代码中的主要问题是,您试图用资源来感受一个点集合,它无法工作,编译器也不正常。。尝试使用标记创建条目。然后播放一段,看看是否可以引用这些标记中的某个地方的资源。为了使用集合XAML语法,请更改属性并删除其setter:
public class Segment : DependencyObject
{
private readonly ObservableCollection<Dot> _dots = new ObservableCollection<Dot>();
public ObservableCollection<Dot> Dots
{
get { return _dots; }
}
}