問題タブ [sharedsizegroup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - ItemsControl のアイテムのグリッド間で列幅を共有する
フォーム内のオブジェクトを表示および編集するためのコントロールを作成しています。コントロール ( FormDataView
) は、ItemsControl
各項目が で構成されるFormField
コントロールGrid
で、左側の列にフィールド名、右側の列にエディター (TextBox など) が表示されます。エディターを揃えるために、それぞれの最初の列がGrid
同じ幅になるようにします。
だから私はIsSharedSizeScope
andを使用しようとしましSharedSizeGroup
たが、うまくいきません。最初の列はそれぞれで幅が異なりますFormField
。
これらのコントロールのスタイルは次のとおりです。
が のテンプレートで設定されているのに対し、は でどのようGrid.IsSharedSizeScope
に設定されているかに注目してください。これは、私がやりたいことを正しく表現しています。それぞれが最初の列に同じ幅を使用する必要があります。ただし、プロパティのドキュメントによると、このシナリオはサポートされていません。ItemsPanel
FormDataView
SharedSizeGroup
FormField
FormField
SharedSizeGroup
リソース テンプレート内で IsSharedSizeScope を true に設定し、SharedSizeGroup をそのテンプレートの外部として定義すると、グリッド サイズ共有は機能しません。
わかりました。なぜうまくいかないのか理解できます...しかし、この制限を回避する方法がわかりません。
何か案が?
NB:もちろん、最初の列に固定幅を割り当てたくありません...
wpf - Grid SharedSizeGroup - 列が跳ね返り、無限ループでサイズ変更されます
水平ヘッダーと垂直ヘッダーの両方を持つテーブルが必要です (単純な PivotGrid)。ここでいくつかの同様の(またはほぼ同じ)問題を見つけましたが、誰も解決策を提供しません。XAML では、次の構造を定義しました。
したがって、両方のヘッダーはいくつかの ColumnDefinitions (それぞれ RowDefinitions) を持つグリッドで構成されており、Content-ColumnDefinitions に従って Header-ColumnDefinitions のサイズを設定する必要があります。私はコードでそれを行います:
したがって、Header-Column はその Width を Content-Column と共有する必要があります。しかし、プログラムを実行すると、列が跳ね返り、無限ループでサイズ変更されます。行の高さの共有は正常に機能します。どこに問題があるのでしょうか?
ヘッダー (grdHorizontalHeader) のEDIT列のみがサイズ変更されます。grdContent の列の幅が正しく安定しています。
wpf - ItemsControl 内の ListViews に相当する SharedSizeGroup はありますか?
国を表す ItemsControl を使用します。国ごとに、都市を表示するために ListView を使用します。
結果:
ユーザーが最初のリストビューで列幅を変更するたびに、2番目のリストビューがそれに応じて幅を調整する必要があります(グリッドのSharedGroupSizeのようなもの)。
どうすればこれを達成できますか?
wpf - GridSplitter がスタックする
複数回ドラッグした後 (最初は正常に動作しているように見えますが、ドラッグするたびにマウス ボタンを離す必要があります)、グリッド スプリッターが動かなくなってドラッグできなくなったり、場合によってはドラッグできないという問題があります。数インチドラッグするだけで、再びスタックします。
私が使用しているコードは実際には ItemTemplate にありますが、問題を示すために、以下の問題コードを抽出しました。
(グリッド要素をコピーして貼り付けて、スタックパネルにいくつかあるようにします。少なくとも 10 個のグリッドがあると、グリッドスプリッターがより速くスタックすることがわかりました)。
したがって、上記のように、複数回サイズ変更を試みると (各ドラッグの間にマウス ボタンを離す)、5 ~ 10 回のサイズ変更の後、少なくとも私にとっては、スプリッターが動かなくなったように見えます。
また、左にドラッグしようとすると動かなくなるようです。
wpf - SharedSizeGroup AND ストレッチを使用した ItemsControl
どうやら、SharedSizeGroup を使用する場合、スター サイズ (*) は使用できません。これはここで議論されています: グリッドの SharedSizeGroup と * sizing
残念ながら、その議論では、問題に対する実行可能な解決策を実際には提供していません。
次のレイアウトで、行ごとに 1 つのコントロールのリストを表示したいと思います。
(名前)(入力欄)(×ボタン)
次のようになります。
しかし、代わりに私は得ています
列 1 は、最も長い単語と同じ幅にする必要があります。列 2 のエントリ テキスト ボックスは、残りのスペース (*) をすべて埋めるために拡大する必要がありますが、前述のように SharedSizeGroup では機能しません。* は Auto として扱われているため、非ストレッチです。
何か案は?XAML は次のとおりです。
c# - WPF および C# でのプログラムによる SharedSizeGroup の設定、削除、またはオーバーライド
XAML を使用して SharedSizeGroup を WPF のグリッドの 2 列に設定しましたが、C# のコードを使用してそのプロパティを削除および再設定またはオーバーライドする方法があるかどうかを知りたいですか?
作成時にこのプロパティを列/行に適用するためのコードは既に知っていますが、新しい列/行を作成または削除したくありません。既存のプロパティを編集するだけです。
c# - ListBox スクロールバーが Grid.IsSharedSizeScope との同期列を壊す
を使用してヘッダー付きのテーブルを表示する必要がありますListBox
これを作成する方法についてWebで検索したところ、この回答が見つかりました。作成したXAMLコードは次のとおりです。
そして、これが私が作成したc#コードですListBox
は 4 行のみを表示するためListBox
、スクロールバーを設定する必要はなく、ヘッダーはテーブルの列とほぼ 100% 整列しています。
に行を追加するListBox
と、問題が悪化し、スクロールバーが表示されます。
ヘッダーが大きすぎる各列のオフセットを見ることができます。Grid.IsSharedSizeScope
スクロールバーの幅を認識し、ヘッダーの幅と見なすようにするにはどうすればよいですか? 私が必要とするのは、テーブルの列をテーブルのヘッダーと 100% 揃えることです。