我正在使用数据模板选择器,如下所示:-
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"。
显示没有问题,功能工作正常,我只关心调试输出中提供给我的信息,这是我看到异常的地方。
为什么即使没有返回使用索引的数据模板,也会抛出这个异常?
如有必要,我可以提供更多信息,但我希望给定的信息就足够了,而无需查看数据源。