web-dev-qa-db-ja.com

Visual Studioでデフォルトのコントロールテンプレートを抽出する方法は?

Visual Studioを使用して特定のコントロールの既定のテンプレートを抽出(コピーを取得)する方法を知りたいのですが。 Expression Blendでこれを実行できることはわかっています(コントロールを右クリックし、[テンプレートの編集]-> [コピーの編集...])。これにより、デフォルトのコントロールテンプレートがXamlにコピーされます。しかし、これはまったくVisual Studioで実行できますか?

52
foreyez

明確な手順を含む2015年の更新

Visual Studio 2013では、いくつかの簡単な手順でコントロールのデフォルトControlTemplateを取得できます。

  1. WPFデザイナーで、関連するコントロールを選択するか、XAMLの関連するコントロールにマウスカーソルを置きます。

  2. 押す F4 プロパティウィンドウを開きます。

  3. その他カテゴリを開いてテンプレートプロパティを見つけるか、ウィンドウ上部の検索フィールドにテンプレートと入力します。

  4. テンプレートフィールドの右側にある小さな正方形をクリックし、新しいリソースに変換...オプションを選択します。

enter image description here

  1. ポップアップダイアログで、追加する新しいControlTemplateに名前を付けて、定義する場所を決定します。

enter image description here

  1. [〜#〜] ok [〜#〜]ボタンをクリックします。
79
Sheridan

Visual Studioから-コントロールを右クリックし、プロパティを選択して、

プロパティウィンドウでテンプレートプロパティを探して右クリックし、[リソースに値を抽出]を選択します。

これにより、XAMLで作業するテンプレートのコピーが作成されます。

33
Royi Mindel

この質問を更新するために、VS 11では、XAMLデザイナーによりExpression Blendと同じようにこれを行うことができます。

9
erodewald

私の知る限り、それは不可能です。ただし、 Show Me The Template を使用して、特定のコントロールのデフォルトテンプレートを表示できます。

2
Adi Lester

留意すべき点が1つあります。特定のコントロールを対象とするスタイルが既に定義されている場合、上記のオプションはすべて無効になります。 App.xamlファイルに次のコードが含まれていました。

<Application.Resources>
    <Style TargetType="Button">
        <Setter Property="IsTabStop" Value="False"/>
    </Style>
</Application.Resources>

他の回答で説明されている「コピーを編集...」および「新しいリソースに変換...」オプションがボタン(完全に異なるファイルで定義されている)に対して無効になっている理由を見つけようとして髪を引っ張っていました)。 Buttonの上記のスタイルコードをコメントアウトすると、突然両方のオプションが無効になりませんでした。ストーリーの教訓:コードのどこかにその要素のスタイルが既に存在する場合、VSはテンプレートコピーを含むスタイルを生成しません。