私は自分のUserControlを作成しています。私はXAMLのUserControl.Resourcesセクションの下に2つの異なるDataTemplatesを持っています。私は、リストビューに表示されるオブジェクトのプロパティの値に応じて、これらの2つのデータ型を選択したいと考えています。カスタムDataTemplateSelectorクラスを作成し、SelectTemplateメソッドをオーバーライドして、使用するDataTemplateを返すことになっています。しかし、私はUserControlsリソースセクションにある私のデータテンプレートを "見つける"ことができません。私が見たすべての例は、Window.Resourcesからデータテンプレートを取り出します。この例では、彼らは現在のメインウィンドウを取得し、その後、私は同様に私ののUserControlをフェッチんかのDataTemplateを、見つけるために、にfindResourceを使う?:WPFのDataTemplateSelectorクラスから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;
}
上記の例はこちらから:ItemsControl.ItemTemplateSelector Property
XAMLで同じことを行う方法はありませんか? – Joakim
これはうまくいきます...しかし、これを行う推奨される方法が何であるか知っていればうれしいです。 – Joakim
本当に..私ももっときれいな方法を知りたいですが、実際にこの問題をXAMLで解決できるとは思いません。コードの中に何らかのリファレンスが必要なので、最も簡単な方法は直接与えるだけです; – Arcturus