我正在使用数据模板选择器,如下所示: -
public class ExampleTemplateSelector : DataTemplateSelector
{
public DataTemplate Foo { get; set; }
public DataTemplate Bar { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var foo = item as FooType;
return foo != null ? Foo : Bar;
}
}
使用此方法的XAML: -
<mtf:DetailTemplateSelector
Foo="{StaticResource foo}"
Bar="{StaticResource bar}"
x:Key="baz" />
foo的数据模板是: -
<DataTemplate x:Key="foo">
<TextBox Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}},
Path=DataContext.DetailItems[2].Field.Value" />
</DataTemplate>
使用以下选择模板: -
<ContentControl Content="{Binding Set}" ContentTemplateSelector="{StaticResource baz}" />
bar的数据模板适用于我知道detailItems [2]超出范围的情况,所以我使用模板选择器返回一个没有任何参数并返回的数据模板,比方说Text =“ qux”。
显示不是问题,功能正常,我只关心调试输出中给出的信息,这是我看到异常的地方。
为什么即使没有返回使用索引的datatemplate,也会抛出此异常?
如果有必要,我可以提供更多信息,但我希望给定的信息足够,而不必查看数据源。