1

次の標準的な手順で MenuItem の ControlTemplate を取得します。

var resource = FindResource(new ComponentResourceKey(typeof(MenuItem), "TopLevelHeaderTemplateKey"));
var settings = new XmlWriterSettings() { Indent = true };
var sb = new StringBuilder();
var writer = XmlWriter.Create(sb, settings);
XamlWriter.Save(resource, writer);
MyTextBox.Text = sb.ToString();

そして、なぜ ControlTemplate の詳細が常に得られるのだろうか:

<Popup IsOpen="False" ...

作業エディションが次の場合:

<Popup IsOpen="{TemplateBinding IsSubmenuOpen}" ...

Reflector ILSpy でハードコーディングされた問題は見つかりませんでした。それでは、MenuItem の標準バージョンが機能しているのはなぜでしょうか。誰かがそれを説明できますか?

4

1 に答える 1

1

確認していませんが、おそらく実行時にテンプレートを取得しているためです。データ バインディングは既に適用されています。

Expression Blend を使用して、設計時にコントロールのテンプレートにアクセスすることをお勧めします。そこに定義されているすべてのバインディングがあります。コントロールを右クリックして、「テンプレート -> 現在の編集」などのオプションを見つけます。

于 2012-05-22T07:36:49.910 に答える