私はこのようItemsPanelTemplateに使用するStackPanelことからを交換したプロジェクトを持っています
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel IsItemsHost="True" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
Canvasこのように使用する
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" Width="Auto" Height="Auto"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
これは、アイテムを互いに積み重ねるのではなく、タイムライン上の開始時間でレイアウトできるようにするためです。しかし、その後、Canvas.Leftの各アイテムのプロパティを設定する方法について行き詰まりましたItemsControl。明らかな場所(私が思った)は、私が'sでGrid使用している場所、つまりここのどこかにありました。ItemTemplateDataTemplate
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Left" VerticalAlignment="Center" Height="10">
<eventBlockVisualization:FGEventUC/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
ただし、XAMLのこの部分には、ホスティングへの参照がありませんCanvas。幸いなことに、atsjooが「ItemsControlDataTemplateにCanvasプロパティを設定する」と質問し、ArcturusがItemContainerStyle(そしてLiamVがここで同様の回答を提供します)の役割と使用法を説明するという非常によく似た質問があります。
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding MinutesFromStartOfLogs}"/>
</Style>
</ItemsControl.ItemContainerStyle>
これはすべて手動でXAMLを細かく編集することですが、理想的には、ExpressionBlend4またはBlendforVisual Studio2012でこれらのスタイルとバインディングを操作したいと思いますItemsControl。Blendの[オブジェクトとタイムライン]パネルで選択してからメニューに移動すると、オブジェクト->追加のスタイルの編集->生成されたアイテムコンテナの編集(ItemContainerStyle)'ItemContainerStyleを編集できるようになりましたが、BlendCanvas.LeftがXAMLで設定されたプロパティを公開する場所がわかりません。それはどこにある?これは「ブレンド可能」ですか?