除非移动WPF窗口,否则Canvas不会刷新

时间:2011-04-09 00:35:21

标签: c# .net wpf graphics

我有一个简单的WPF窗口,其上有一个Canvas,Canvas在Path中有一个带有GeometryGroup的Path对象:

<Path
      Stroke="Red"
      StrokeThickness="3">
    <Path.Data>
        <GeometryGroup Children="{Binding Elements}" />
    </Path.Data>
</Path>

所以我在InitializeComponent()调用之前初始化Elements集合并且它正确显示。之后使用System.Timers.Timer我更新现有的形状点,以便它们移动。这有效。但问题是我只看到Canvas在用鼠标移动WPF窗口时更新其结果。如果我把它留在那里,那么最后一张图片就会挂起,但点会更新。

当我再次开始移动WPF窗口并且Shapes跳转到最新位置时,我可以看到这一点。

有关如何解决这个问题以及为什么要这样做的任何想法?

1 个答案:

答案 0 :(得分:1)

您需要在要绑定的类上实现INotifyPropertyChanged,项目列表应实现INotifyCollectionChanged,如ObservableCollection。一旦这样做,就不需要计时器或调度员。