2011-02-04 2 views
0

このコードでは、データテンプレート内のキャンバスに残しておくとキャンバス領域のマウスが遅くなりますが、 (ただし、明らかにCanvas.Leftバインディングは機能しませんので、省略記号は間違った場所にあります)それぞれのキャンバスを必要とせずにこれらのアイテムを配置する方法はありますか?Silverlight 4キャンバスを使わないキャンバスなしのバインディング

<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> 

おかげで非常に多く、 ベッキー

+0

他の人が問題を再現しやすくするために、ここにいくつかのコード/ xamlを入れてください。 – decyclone

答えて

1

はい、あなたは楕円でキャンバスを削除することができます。 CanvasPlacement.Xの値が楕円ごとに正しくインクリメントされず、ItemsControlの各要素が実際にStackPanelに配置されていることがわかります(デフォルトの動作で、 ItemsPanelプロパティ)を使用して、これらの要素をレイアウトします。ほとんどの場合、水平線です。

+0

ああ、興味深いことです - 実際には、親キャンバスの左側に楕円が垂直に並んでいます。 ItemsPanelプロパティにキャンバスを置いても、.Leftバインディングが無視されるため、itemtemplateキャンバスを削除することはできません。したがって、同じ問題があります:) –

関連する問題