2010-11-24 2 views
1

タイトルのように:動的なUniformGridの特定の列をサイズ変更できるエレガントな方法がありますか?ダイナミックWPF UniformGridの特定の列をサイズ変更可能にするためのエレガントな方法

詳細

私はItemsControlにを持っているタイプUniformGridであることがItemsPanelTemplateを設定します。 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> 

、私は何を達成しようとしていることは、特定の列がまだ可能にしながら、それらに静的な幅を与えて、サイズ変更可能であることを、それを可能にすることです他の列は幅が均一に整えられます。

私に指導する方向性がありますか?私はUniformGridのレンダリングのあまり具体的なカスタム実装を避けることを望んでいましたが、これをスマートで簡単に行う方法はありますか?よろしく オレ

答えて

1

と事前 で

おかげであなたは、静的な幅でいくつかの列を維持し、他の人がダイナミックな幅を持ってみましょうしようとしている場合、私はUniformGridが一緒に行く権利Panelではないと言うでしょう。

StackPanelと一緒にHorizontal Orientationに行ってみませんか?あなたのコードから、私はあなたが1つの行だけを必要と見る。

これがうまくいかない場合は、Gridに行ってください。あなたはいくつかのコードを書く必要がありますが、それはあなたに最高の結果を与えるでしょう。 GridSplitterを使用して、Grid列をサイズ変更可能にすることができます。

+0

ありがとうdecyclone。私は最初にStackPanelを試しましたが、 "columns"の内容をできるだけ大きな幅にサイジングするのに問題がありました。最初はGridが良い選択のように思えますが、ItemsControlで可能なテンプレート化を行うことは可能ですか? –

+1

もちろん可能です。この記事(http://www.scottlogic.co.uk/blog/colin/2010/11/using-a-grid-as-the-panel-for-an-itemscontrol/)では、その方法を説明しています。 – decyclone

+0

あなたは私の一日を救ったようです。どうもありがとう。私はそれを試みます。 –

関連する問題