私は独自の UserControl を作成しており、XAMLのUserControl.Resourcesセクションの下に 2 つの異なる DataTemplates があります。リストビューに表示されるオブジェクトのプロパティの値に応じて、これら 2 つのデータ テンプレートのいずれかを選択したいと考えています。これを行うには、カスタムDataTemplateSelectorクラスを作成し、使用する DataTemplate を返すことになっているSelectTemplateメソッドをオーバーライドします。ただし、 UserControls リソースセクションにあるデータテンプレートを「見つける」方法がわかりません。私が見たすべての例は、 Window.Resources からデータテンプレートをフェッチするだけです。この例では、現在の MainWindow をフェッチし、FindResourceを使用してDataTemplate 、同様の方法でUserControlを取得するにはどうすればよいですか?:
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
if (item != null && item is AuctionItem)
{
AuctionItem auctionItem = item as AuctionItem;
Window window = Application.Current.MainWindow;
switch (auctionItem.SpecialFeatures)
{
case SpecialFeatures.None:
return
window.FindResource("AuctionItem_None")
as DataTemplate;
case SpecialFeatures.Color:
return
window.FindResource("AuctionItem_Color")
as DataTemplate;
}
}
return null;
}