1

私のアプリケーションでは、ItemsPanelTemplateとしてCanvasを使用したItemsControlがあります。itemspanelソースのアイテムはthumbオブジェクトであり、ドラッグアンドドラッグできます。アイテムが画面表示から外れた場合、スクロールして表示することはできません。どうしたいですか?私のコードは以下です:

            <ItemsControl ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible">
                <ItemsControl.ItemContainerStyle>
                    <Style>
                        <Setter Property="Canvas.Left" Value="{Binding XPosition}"/>
                        <Setter Property="Canvas.Top" Value="{Binding YPosition}"/>
                    </Style>
                </ItemsControl.ItemContainerStyle>
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Canvas/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
4

2 に答える 2

2

まず、 を で囲む必要がありますItemsControl(ScrollViewerコントロール テンプレートにある ListBox とは異なります)。

<ScrollViewer>
    <ItemsControl> ... </ItemsControl>
<ScrollViewer>

第 2 に、 aCanvasはその子の後にサイズを変更しません。したがって、いくつかのオプションがあります。

  • 1 つのセルで Grid を使用し、Marginプロパティを使用して位置を設定します。
  • 最大サイズを計算し、キャンバスWidthHeightプロパティを設定します。
  • Canvas から継承し、MeasureOverride メソッドをオーバーライドして、子のサイズを反映するようにします。(この回答を参照してください。)
于 2012-05-27T08:56:42.967 に答える