2011-01-27 16 views
0

私はアプリケーションでドラッグして項目を削除していますが、ドロップするオブジェクトの内容に基づいて動的にグリッドをクリスタル処理しています(一部のオブジェクトでは、 2列のグリッド、4つのグリッドなど)。これは簡単なことですが、これらの列をどのくらい広げたいのかを指定しようとすると、それは機能しておらず、グリッドを互いの上に表示しています。私は列がどのように見えるかを付けます。WPF ColumnDefinitionsのWidthおよびMaxWidthプロパティが機能しません

最初の例は、5つのオブジェクトがドラッグアンドドロップされた結果を示しています。幅の指定は効果がないことが分かります。 enter image description here

第2の例は同じことですが、グリッドが幅の指定に従っていないことを示しています。 「Zip」オブジェクトに「Email」オブジェクトをドロップすると、グリッドがオーバーレイされます。 enter image description here

ここに定義を作成するために使用しているコードです。反復処理する各アイテムについてわかるように、私はラベルを作成しています。

   /*Initialize Grid Layout*/ 
       Grid newGrid = new Grid(); 
       newGrid.MinHeight = 40; 

       /*Define Column Definitions*/ 
       List<ColumnDefinition> columns = new List<ColumnDefinition> (fieldItemList.Count); 
       foreach (ColumnDefinition column in columns) 
       { 
        ColumnDefinition labelColumn = new ColumnDefinition(); 

        /*Specify Width Dimensions*/ 
        labelColumn.Width = new GridLength(150); 
        labelColumn.MaxWidth = 200.0; 
        newGrid.ColumnDefinitions.Add(labelColumn); 
        newGrid.ColumnDefinitions.Add(column); 
       } 

       /*Define Row Definitions*/ 
       RowDefinition row = new RowDefinition(); 
       newGrid.RowDefinitions.Add(row); 

列定義に割り当てる境界線を尊重する方法を教えてください。

+0

コードがスクリーンショットにどのように適合するかを理解するのは難しいですが、ColumnDefinitionsが伸びていないことは確かですか?グリッドの子どもたちは伸びていない可能性があります。 'newGrid.ShowGridLines = true;でGridのGridLinesを有効にしてみてください –

答えて

1

実際のコードですか?もしそうなら、私はあなたがグリッドに列を追加しているとは思わない。上記のコードで

List<ColumnDefinition> columns = new List<ColumnDefinition> (fieldItemList.Count); 
    foreach (ColumnDefinition column in columns) 
      { 

、列オブジェクトはfieldItemList.Countの容量で初期化されているが、任意のColumnDefinitionオブジェクトが含まれていません。

+0

あなたは正しいです、リスト定義は何もこの時点で達成されていません、それは繰り返しの目的のためだけに使用されています。これは私の問題を解決するものではありませんが、目的を果たせないコードのいくつかを指摘しました。ありがとう – TheJediCowboy

+0

@CitadelCSAlum、私のポイントは何もしていない空のコレクションを反復することです!列を追加していないので、列幅を設定することはできません! – grantnz

0

グリッドをストレッチするように設定されているだけそれが記入する必要がある残りのスペースを埋めるために何も持っていない幅の列を固定している場合newGrid.HorizontalAlignment = HorizontalAlignment.Left;

設定してみてください。残りのスペースを取るために*サイズの列を追加することもできます。

+0

これは問題ではないと私は思います。ストレッチするように設定されているグリッドは、固定幅の列を伸ばしてはいけません。 –

0

(2 * fieldItemList.Count)列を追加しています。私はあなたがループの列を追加する必要があるとは思わない... GridをXAMLで定義してからC#に移植してみてください。

関連する問題