0

このコントロールを自分の WPF プロジェクトに実装したいのですが、このコントロールの名前がわかりません。 ここに画像の説明を入力 誰かが以前にこれに取り組んでいましたか?このコントロールについて教えてください。ありがとう

4

3 に答える 3

0

ツールバーのことですか?存在しません。自分で実装し、必要なビューの種類ごとに異なるデータテンプレートを作成し、クリックしてそれらを切り替える必要があります

于 2013-07-04T14:44:15.930 に答える
0

問い合わせの最初のレベルは、コントロールが実際に WPF コントロールであるかどうかを判断することです。これを行うには、WPF Snoop Utility を使用できます。ユーティリティが WPF コントロールを検出すると、次のような画面が生成されます...

スヌープ表示

この画像に示すように、ビジュアル ツリーを調べて、それが実際に WPF コントロールであることを確認できます。その後、作成者が使用した Xaml を見つけてアプリに再デプロイします。Xaml を取得できない場合は、Snoop (または別の同様のユーティリティ) を使用してコントロールを「リバース エンジニアリング」する必要があります。

スヌープはこちら... https://snoopwpf.codeplex.com/

Xaml を取得できない場合、またはそれが WPF コントロールでない場合は、最初から "リバース エンジニア" が必要です。HighCore はそれが些細な作業であると述べており、私も彼に同意します。

実際にコントロールのインスタンスを取得できる場合は、このメソッドを使用してテンプレートを取得できます...

    public void DefaultControlTemplateLoaded(TreeView sender, RoutedEventArgs e)
    {
        StringBuilder stringBuilder = new StringBuilder();
        XmlWriterSettings xmlSettings = new XmlWriterSettings();
        xmlSettings.Indent = true;
        using (XmlWriter xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings))
        {
            XamlWriter.Save(sender.ItemsPanel, xmlWriter);
        }
        Console.WriteLine(stringBuilder.ToString());
    }

これを行うには、アセンブリをロードして、宣言が見つかるまで調べ、Activator を使用してインスタンスを作成する必要があります。

製品に「リバース エンジニアリング」を許可するライセンスがあることを確認してください。

于 2013-07-04T15:37:09.973 に答える
0

これらの種類のビューを作成したい場合は、リストビュー用のカスタム ビューを作成できます。こちらをご覧ください。

ただし、コントロールの名前を知りたい場合は. 次に、Snoopを使用して WPF ビジュアル ツリーを生成すると、コントロールの名前がレンダリングされていることがわかります。コントロールで。

または、VisualTreeHelper.GetChildメソッドを使用する別の方法

// Enumerate all the descendants of the visual object. 
static public void EnumVisual(Visual myVisual)
{
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
    {
        // Retrieve child visual at specified index value.
        Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);

        // Do processing of the child visual object. 

        // Enumerate children of the child visual object.
        EnumVisual(childVisual);
    }
}
于 2013-07-04T15:33:06.217 に答える