2

我正在使用数据模板选择器,如下所示:-

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"。

显示没有问题,功能工作正常,我只关心调试输出中提供给我的信息,这是我看到异常的地方。

为什么即使没有返回使用索引的数据模板,也会抛出这个异常?

如有必要,我可以提供更多信息,但我希望给定的信息就足够了,而无需查看数据源。

4

0 回答 0