在我正在使用的Silverlight游戏中,我正在使用ItemsControl
来显示ObservableCollection
个我们称之为Foo
的游戏对象。 Foo
实现了INotifyPropertyChanged
并且只有一个属性:Radius
。 ItemsControl
的{{1}}代表每个ItemTemplate
为圆形路径,路径半径为Foo
。
我遇到的问题是,每当我尝试向Foo.Radius
添加内容时,我都会收到ObservableCollection
,并显示消息“由于对象的当前状态,操作无效。 “如果删除InvalidOperationException
和RadiusX
绑定程序运行正常,如果我将RadiusY
绑定到Foo.Radius
的某个属性,它仍然有效。我对如何绑定几何属性感到茫然。我错过了什么吗?
XAML供参考:
Path
代码隐藏:
<ItemsControl ItemsSource="{Binding}" x:Name="LayoutRoot">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Path Stroke="Black">
<Path.Data>
<EllipseGeometry RadiusX="{Binding Radius}" RadiusY="{Binding Radius}" />
</Path.Data>
</Path>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
答案 0 :(得分:0)
试试这个......
Dispatcher.BeginInvoke(() => things.Add(new Foo()));
答案 1 :(得分:0)
我做了一些搜索,发现在Silverlight 3中it's only possible to bind properties to FrameworkElement
s,但Geometry
继承自DependencyObject
。将项目升级到Silverlight 4似乎解决了这个问题。