2

私はこのよう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で設定されたプロパティを公開する場所がわかりません。それはどこにある?これは「ブレンド可能」ですか?

4

1 に答える 1

0

私の知る限り、これは不可能です。添付プロパティが多すぎるため、Blend には表示されません。要素をキャンバスに直接配置すると、左側と上部のプロパティが表示されますが、すべての添付プロパティを使用できるようにすることは不可能です。たとえば、プロパティを設定する要素がキャンバス内にない場合、Canvas.Left プロパティを設定できます。

添付プロパティを設定する唯一の方法は、Xaml で手動で行うことです。

于 2013-01-29T14:26:41.653 に答える