MarkupExtension があります
public class DataTemplates : Dictionary<object, DataTemplate>{}
[MarkupExtensionReturnType(typeof(DataTemplateSelector))]
[ContentProperty("DataTemplatesDictionary")]
public class TemplateSelectorExtension : MarkupExtension
{
//...
public DataTemplates DataTemplatesDictionary { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (DataTemplatesDictionary == null) throw new ArgumentException();
// some logic
}
}
xamlで使用する
<TabControl.ItemTemplateSelector>
<GUI:TemplateSelector>
<GUI:DataTemplates> <!-- How do I avoid this element???-->
<DataTemplate ....>
</DataTemplate>
<DataTemplate ....>
</DataTemplate>
</GUI:DataTemplates>
</GUI:TemplateSelector>
</TabControl.ItemTemplateSelector>
問題は、「GUI:DataTemplates」要素が TypeConverter またはその他の方法で記述されないようにすることは可能ですか?
ありがとう!
更新: MSDN の記事を見つけました。私の例は "GUI:DataTemplates" がなくてもうまく動作するはずですが、そうではありません:(インターネットの多くの記事でも同じことが述べられています。何が間違っていますか?