每个项目没有画布的Silverlight 4 Canvas.Left绑定

时间:2011-02-04 14:24:05

标签: data-binding silverlight-4.0 itemscontrol

我在这段代码中遇到了一些性能问题,如果我留在数据模板中的画布上,那么鼠标悬停在画布区域上是滞后的,但是如果我把它拿出来没有延迟(但显然Canvas.Left绑定没有不行,所以省略号位于错误的地方!)有没有办法摆放这些物品而不需要每个人都需要自己的画布?

    <Canvas>    
    <ItemsControl ItemsSource="{Binding Path=SpatialData.TrainEvents.ArrDepEllipseOfLines}" Name="ctrlChartTrainEventsArrDep" >
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Canvas>
        <Ellipse Width="{Binding EventShape.Width}" Height="{Binding EventShape.Height}" Stroke="{Binding Path=Stroke}" StrokeThickness="{Binding StrokeThickness}" Fill="{Binding Path=Fill}" Canvas.Left="{Binding CanvasPlacement.X}" Canvas.Top="{Binding CanvasPlacement.Y}" />
      </Canvas>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
 </ItemsControl>
</Canvas>

非常感谢, 贝基

1 个答案:

答案 0 :(得分:1)

是的,您可以删除椭圆中的画布。我想您会发现CanvasPlacement.X的值不会因椭圆而正确递增,而您看到的效果是您的ItemsControl中的每个元素实际上都放在了StackPanel中(默认行为可以通过ItemsPanel属性)然后为你铺设这些 - 最有可能是在水平线。

相关问题