1

タイトルのように:動的UniformGridの特定の列のサイズを変更できるようにするエレガントな方法はありますか?

詳細

ItemsControlがあり、ItemsPanelTemplateをUniformGridタイプに設定しています。ItemTemplateは、列のコンテンツをレンダリングするカスタムコントロールに設定されます。

xamlの抜粋は次のとおりです。

<ItemsControl x:Name="PART_Dimensions" 
            Grid.Column="1" HorizontalAlignment="Stretch">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>

        <UniformGrid Columns="{Binding 
            Path=ItemsSource.Count, 
            RelativeSource={RelativeSource FindAncestor,
            AncestorType={x:Type ItemsControl}}}" 
                        IsItemsHost="True"/>

    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
    <DataTemplate>

            <local:Dimension 
                PropertyA="{Binding SourceA}"
                ItemsSource="{Binding SourceB}" />

    </DataTemplate>
</ItemsControl.ItemTemplate>

今、私が達成しようとしているのは、特定の列のサイズを変更できるようにすることです。これにより、他の列の幅を均一にしたまま、静的な幅を与えることができます。

誰かが私を指す方向がありますか?ユニフォームグリッドのレンダリングの特定のカスタム実装を避けたいと思っていましたが、これを行うためのスマートで簡単な方法はありますか?

オレに関してよろしくお願いします

4

1 に答える 1

1

いくつかの列を静的な幅に保ち、他の列に動的な幅を持たせようとしている場合、それUniformGridは適切ではないと思いPanelます。

StackPanelと一緒に行ってみませんHorizontal Orientationか?あなたのコードから、1行しか必要ないことがわかります。

それがうまくいかない場合は、 を使用してくださいGrid。コードを書く必要がありますが、それが最良の結果をもたらします。列をサイズ変更可能GridSplitterにするために使用できます。Grid

于 2010-11-24T12:51:43.463 に答える