40

XAML形式(ビジュアルツリー)のWPFで既存のコントロールのControlTemplateを取得するにはどうすればよいですか?これは、既存のテンプレートを使用して新しいControlTemplateを作成するのに役立ちます。

4

8 に答える 8

37

StyleSnooperをチェックしてください:

ここに画像の説明を入力してください

組み込みのコントロールの標準スタイル(したがってテンプレートも)をダンプします。WPFコントロールを含む特定のDLLをロードして、それらのデフォルトスタイルを表示することもできます。

于 2009-10-13T10:42:57.267 に答える
30

スタイルとテンプレートの例は、MSDNでダウンロードできます。Default WPF Themesリンクを参照してください。

BasedOnただし、属性を使用してすべてを再定義せずに既存のスタイルを拡張することもできます。

于 2009-10-13T14:21:14.970 に答える
18

Expression Blendを使用している場合は、次のことができます。

  1. コントロールをデザイン画面にドラッグします
  2. コントロールを右クリックして、[テンプレートの編集]->[コピーの編集]を選択します

これを行うと、Blendはコントロールからベーステンプレートを抽出し、ドキュメント/アプリケーション内でリソースとして明示的に宣言します。このリソースは、好みに合わせて編集できます。これは、任意のコントロールに対して実行できます。

于 2009-10-13T12:58:11.443 に答える
3

MatthewMacDonaldによる本「ProWPFinC#2008」には、第15章にコントロールテンプレートブラウザが含まれています。ApressのWebサイトからサンプルコードをダウンロードするだけでよいと思います。

于 2009-12-19T13:15:08.090 に答える
2

2020年の更新:

WPFコンポーネントのすべてのスタイルとテンプレートがここに移動されました。
ただし、新しいコンポーネントを作成する前に、これをチェックして、それに代わる適切な方法があるかどうかを確認してください(スタイルを変更しても機能する可能性があります)。
注:通常、DynamicResourceバインディングが多数あり、それらを自分のものに置き換えて静的にすることができます。手作業をあまりやりたくない場合は、以下の2番目のソリューションの使用を検討してください。

2番目のより短い解決策は、Microsoft Blendを使用して、次の手順でテンプレート を抽出することです。

コントロールを右クリックEdit Template>>Edit CurrentまたはEdit a Copy

ただし、これは必ずしもテンプレート全体をエクスポートするわけではなく、テンプレート の必要な部分をエクスポートするため、注意が必要です。 このテンプレートを公式のテンプレート(上記)と比較して、すべてが正常であることを確認することを検討してください。

于 2020-03-22T21:11:07.200 に答える
1

ShowMeTheTemplateのようなツールを使用できます

于 2009-10-13T10:09:51.030 に答える
1

Microsoft Blendを使用する:このツールのファイルにXAMLコード全体を貼り付け、視覚的なツリーを認識したいコントロールを右クリックします。

オプションを選択します:テンプレートを編集すると、そこに行きます

于 2013-06-15T06:04:01.907 に答える
0

XamlWriterクラスは、この機能を提供します。がコントロールの名前である場合controlName、以下のスニペットを使用して、オブジェクト内のコントロールのテンプレートのXamlを取得しstringBuilderます。回答に記載されているツールはこのクラスを利用していると思います。

var stringBuilder = new StringBuilder();
var xmlSettings = new XmlWriterSettings
{
  Indent = true
};

using (var xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings))
{
  XamlWriter.Save(controlName.Template, xmlWriter);
}
于 2013-09-26T18:59:17.073 に答える