我有一个项目,我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
. 明显的地方(我认为)在Grid
我使用的ItemTemplate
'sDataTemplate
中,即这里的某个地方:
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Left" VerticalAlignment="Center" Height="10">
<eventBlockVisualization:FGEventUC/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
但是 XAML 的这一部分没有提及托管Canvas
。幸运的是,有一个非常相似的问题,其中 atsjoo 询问“在 ItemsControl DataTemplate 中设置 Canvas 属性”,Arcturus 回答解释了它的作用和使用(并且 LiamV在此处ItemContainerStyle
提供了类似的答案),在我的情况下导致
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding MinutesFromStartOfLogs}"/>
</Style>
</ItemsControl.ItemContainerStyle>
这一切都很好手动编辑 XAML,但理想情况下,我想在 Expression Blend 4 或 Blend for Visual Studio 2012 中操作这些样式和绑定。如果我ItemsControl
在 Blend 的“对象和时间线”面板中选择,然后转到菜单“对象 -> 编辑其他样式 -> 编辑生成的项目容器 (ItemContainerStyle)' 我最终能够编辑 ItemContainerStyle 但我看不到 Blend 在哪里公开了Canvas.Left
我的 XAML 中设置的属性。它在哪里?这是“可混合”吗?