1

だから私はWPFを使い始めたばかりで、2つのグリッドを重ねると、一番上のグリッドが不透明ではないという事実に本当に悩まされています。それは設計を非常に面倒にします。これをどうにかしてオフにすることはできますか?

標準の Winforms STYLE アプリケーションを WPF で構築しているだけです。私はここでギャップを埋めようとしているだけです。Winforms (および VB) では、フォームに常にグループ ボックスまたは何かがあり、ユーザー コンテキストによっては、それらのグループ ボックスの 1 つが一番上に表示されます。太古の昔から私がフォームをデザインしてきた方法です。ここでは、次の 2 つのいずれかが真である必要があります。

A) これは、WPF を使用して Windows を設計するための推奨される方法ではありませんが、何をすべきか理解できません。

B) グリッドを不透明にするいくつかのプロパティがあるため、慣れ親しんだスタイルでウィンドウを作成できます。

AまたはBのいずれかを解決する答えで問題ありません。変更されたために正しい方法で行っていない場合は、教えてください。

更新:背景色を設定することでグリッドを不透明にすることができますが、システムの色に固執するのではなく、白い背景にロックされているようです。

4

2 に答える 2

2

SystemColorsコントロールの背景色を(白ではなく)一致させるために使用できます。

しかし、なぜあるグリッドを別のグリッドの上に配置したいのかわかりません。WPFでは、通常、単一のグリッドを使用して、1つの領域内に複数の視覚要素をスタックします。前景要素で背景にあるものを隠したい理由を説明できますか?

タブコントロールを実装しているように聞こえます。フォーカスに応じてコントロールのページを切り替えます。新しいものを試しましたTabControlか?

可能な限り、WinFormsからWPF開発に移行していますが、そうすることで、ある程度の再調整が必要であることがわかりました。WPFのレイアウト方法はまったく異なりますが、私はWPFに慣れてきたので、優れていると思います。少し長く学習曲線に乗る必要があると思います。

お役に立てば幸いです。

編集:あなたのコメントに応えて、私は自分で試したことはありませんが、タブなしでタブコントロールを使用できると思います(SOに関する別の質問に値するかもしれません)。タブコントロールはヘッダー付きコントロールです。つまり、ヘッダーアイテムとコンテンツアイテムがあります。この場合、ヘッダーはタブボタンであり、コンテンツはページアイテムです。ControlTemplateこれらのアイテムを相互にどのように表示するかを詳細に指定できます。

興味深いことに、他の多くのタイプの一般的なGUI要素もヘッダー付きコントロールです。

  • メニュー項目-メニュー項目のテキスト/アイコンはヘッダーであり、オプションのサブメニューはコンテンツです
  • ツリービュー-各ノードはヘッダーであり、オプションの子はコンテンツ内にあります
  • グループボックス-ヘッダーはヘッダーであり、コンテンツはコンテンツです:)

メニュー項目とツリービューの場合、タイプはそれ自体の中に再帰的にネストする可能性があることに注意してください。これは非常にエレガントで、コントロールテンプレートを変更するだけで、同じ論理モデルに対して大きく異なる表示オプションを提供できます。

詳細についてはHeaderedContentControlHeaderedItemsControl

于 2009-01-17T16:39:21.217 に答える
0

次を使用できます。

  <Grid Background="{DynamicResource {x:Static SystemColors.WindowBrush}}">  
  <!-- content -->
  </Grid>

これは、システムの色の変更にその場で応答します(DynamicResourceがこれを行います)。

于 2009-01-17T16:44:02.860 に答える