Silverlight 4 Canvas.Left переплет без холста на предмет - PullRequest
0 голосов
/ 04 февраля 2011

У меня возникают некоторые проблемы с производительностью в этом коде, когда наложение на область холста происходит с задержкой, если я оставляю холсты в шаблоне данных, но без задержки, если вынимаю их (но очевидно, что привязки 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 Ответ

1 голос
/ 04 февраля 2011

Да, вы можете удалить холст из своего эллипса.Я думаю, вы обнаружите, что ваши значения для CanvasPlacement.X не увеличиваются должным образом для каждого эллипса, и эффект, который вы видите, заключается в том, что каждый элемент в ItemsControl фактически помещается в StackPanel (поведение по умолчанию и может быть изменено с помощьюСвойство ItemsPanel), которое затем раскладывает их для вас - скорее всего, по горизонтали.

...