GridViewのような独自のGridViewコントロールが各行に複数のコントロール(System.Windows.Controlsのすべてのコントロール)で作成されています。コード背後からの高さのバインド
ユーザは、行の高さがコントロールのコンテンツに制限されずに拡大するように要求しました。私は、各行のすべてのコントロールのサイズを最高のものとの関係で維持するのに問題があります。
各行のすべてのコントロールの高さをRowDefenition ActualHeightプロパティに一方向バインドしようとしています。私はそれが動作することを期待どおりに動作していません(各コントロールは、最小限の独自のサイズを保持)
ありがとう、ありがとう、ありがとう。ここで
は私がバインドしようとしているコードです:
RowDefinition rowDef = new RowDefinition();
cellsGrid.RowDefinitions.Add(rowDef);
rowDef.Name = "gvRow" + cellsGrid.RowDefinitions.Count;
cellsGrid.Children.Add(controlToAdd);
Grid.SetRow(controlToAdd, rowIndex);
Grid.SetColumn(controlToAdd, columnIndex);
Binding bindH = new Binding("ActualHeight");
bindH.Mode = BindingMode.OneWay;
bindH.Source = rowDef;
BindingOperations.SetBinding(controlToAdd,RowDefinition.HeightProperty, bindH);
controlToAdd.TabIndex = (totalTabIndex + 1); totalTabIndex++;
cell.CellElement = controlToAdd;
cell.EndEdit += new GridViewCell.GridViewEditHandler(cell_EndEdit);
コントロールの「VerticalAlignment」を「Stretch」に設定して、使用可能なスペースをすべて埋めるようにしてください。また、 'RowDefinition'が' ActualHeight'プロパティを持っているとは思いません。バインディングに対してはおそらく何も評価されていません。あなたのコントロールの 'ActualHeight'にバインドする必要がありますが、その値はレンダリングされるまで知ることができません。コントロールがレンダリングされた後、 'Dispatcher.Invoke'を使って何かを実行し、行の中で最も背の高いコントロールを見つけ出し、すべてのアイテムをその高さに設定することができます。 – Rachel
ありがとうございました。今度は、グリッドがレンダリングされただけでコントロールの高さをバインドしています。すべてが完璧に機能します。 –
嬉しいこと:)私は答えとして投稿しました – Rachel