在ItemsControl中绑定几何属性

时间:2011-08-02 06:30:04

标签: silverlight data-binding

在我正在使用的Silverlight游戏中,我正在使用ItemsControl来显示ObservableCollection个我们称之为Foo的游戏对象。 Foo实现了INotifyPropertyChanged并且只有一个属性:RadiusItemsControl的{​​{1}}代表每个ItemTemplate为圆形路径,路径半径为Foo

我遇到的问题是,每当我尝试向Foo.Radius添加内容时,我都会收到ObservableCollection,并显示消息“由于对象的当前状态,操作无效。 “如果删除InvalidOperationExceptionRadiusX绑定程序运行正常,如果我将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>

2 个答案:

答案 0 :(得分:0)

试试这个......

   Dispatcher.BeginInvoke(() => things.Add(new Foo()));

答案 1 :(得分:0)

我做了一些搜索,发现在Silverlight 3中it's only possible to bind properties to FrameworkElements,但Geometry继承自DependencyObject。将项目升级到Silverlight 4似乎解决了这个问题。