このコントロールを自分の WPF プロジェクトに実装したいのですが、このコントロールの名前がわかりません。 誰かが以前にこれに取り組んでいましたか?このコントロールについて教えてください。ありがとう
3 に答える
ツールバーのことですか?存在しません。自分で実装し、必要なビューの種類ごとに異なるデータテンプレートを作成し、クリックしてそれらを切り替える必要があります
問い合わせの最初のレベルは、コントロールが実際に 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 を使用してインスタンスを作成する必要があります。
製品に「リバース エンジニアリング」を許可するライセンスがあることを確認してください。
これらの種類のビューを作成したい場合は、リストビュー用のカスタム ビューを作成できます。こちらをご覧ください。
ただし、コントロールの名前を知りたい場合は. 次に、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);
}
}