0

XAML Metro アプリでモーダル ダイアログをエミュレートしたいと考えています。

したがって、モーダル ダイアログとして表示されるものを除いて、すべてのコントロールで .IsEnabled = false を設定するつもりでした。

どうやら IsEnabled は Grid ではなく、Panel ではなく FrameworkElement ではありません。ユーザーコントロールを作成せずに無効にする方法は?

シノフスキーは非常に多くのコーナーをカットしたため、全体がエッシャーの階段のようになっていると思います。私は信仰を失っています。助けてください

4

3 に答える 3

2

IsHitTestVisible = false背景コンテンツに設定します。

さらに、モーダル レイヤー ルート内の何かにフォーカスを設定し、モーダル レイヤー ルートに設定TabNavigationCycleて、ユーザーがそこからタブ/シフト + タブで移動できないようにすることができます。また、モーダル レイヤーがすべてヒット テスト ソリッドであることを確認します。たとえばTransparent、ユーザーがクリックできないように他の塗りつぶしがあることを確認します。

またPopups、モーダルレイヤーが表示されている間は表示されないようにしてください。

于 2013-01-18T23:55:05.807 に答える
2

すみません、パーティーに少し遅れてしまいました...

モーダル ポップアップの作成方法は次のとおりです。上部と下部が透明なポップアップ ダイアログを使用して、その背後にあるものが透けて見えるようにしました。ポップアップが開いたら、画面全体をカバーするようにサイズを設定します。

ポップアップの上部と下部も自動サイズ設定 (高さ = *) に設定されているため、画面の上部と下部全体を埋めます。これにより、入力が下のグリッドに入るのを防ぎます。

Visual Studio でのポップアップのスクリーン ショットを次に示します。 ここに画像の説明を入力

ポップアップは、ダイアログ自体に 3 行、透明な上部と下部に 2 行の 5 行のグリッドです。

これが私のアプリでポップアップがどのように見えるかです。明らかに、グリッドは透明な上部と下部を通して表示されます。ポップアップは画面全体に表示されるため、入力 (キーボードまたはマウス) は下のグリッドではなくポップアップに送られ、ポップアップはモーダル ダイアログのように機能します。

下にグリッドがあるポップアップ

ただし、この戦略では、次のイベントを処理する必要があることに注意してください。

  • 画面のサイズ変更 (全画面表示、スナップ表示、塗りつぶし表示) - 各表示状態に収まるようにポップアップのサイズを変更する必要があります
  • 画面の回転 - 繰り返しますが、ここでサイズ変更を処理する必要があります
  • キーボード ポップアップ - オンスクリーン キーボードが干渉しないように、ポップアップを上に移動する必要があります。
于 2013-01-21T15:33:47.043 に答える
0

残念ながら、誰も知らないようです(間違った答えを出し、それを修正することを気にしなかったSkakun氏を除いて).

したがって、私の解決策 (最も簡単な方法) は、問題の要素を非表示にすることです。グリッドを「無効にする」他の方法は見つかりません。

正しく無効にしたい場合は、グリッドの子ですべての FrameworkElements を検索し、IsEnabled = false に設定する再帰関数を作成する必要があります。

于 2013-01-21T14:34:30.500 に答える