我有一个项目,我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 中设置的属性。它在哪里?这是“可混合”吗?