静态资源上的“提供价值......”例外

时间:2014-11-07 13:04:29

标签: wpf xaml datatemplate staticresource

我得到了这个例外:

'Provide value on 'System.Windows.StaticResourceExtension' threw an exception.' Line number '13' and line position '6'.

当我尝试运行以下XAML时:

<Window x:Class="WPF_Application.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:me="clr-namespace:WPF_Application"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <DataTemplate DataType="me:ExampleBusinessObject" x:Key="BusinessObjectTemplate">
            <StackPanel>
                <Label HorizontalAlignment="Center" Content="{Binding Path=Title}"/>
            </StackPanel>
        </DataTemplate>
    </Window.Resources>
    <ItemsControl ItemsSource="{Binding BusinessObjects}" ItemTemplate="{StaticResource BusinessObjectTemplate}"/>
</Window>

据我所知,这通常是由静态资源扩展指向不可用的东西引起的,但是我知道模板应该在那时可用。

2 个答案:

答案 0 :(得分:5)

我建议删除上面提到的数据类型或从itemscontrol中删除itemtemplate。

您收到此错误的原因是您提供了2个相互冲突的信息。通过设置数据类型,只要对象类型是ExampleBusinessObject,就告诉WPF使用此数据窗口。通过设置ItemTemplate,您告诉WPF始终使用此datatemplate。使用其中一个。

答案 1 :(得分:0)

XAML伪装成xml,但有时有时顺序却很重要。将DataType放在x:key之后。

    <DataTemplate x:Key="BusinessObjectTemplate" DataType="me:ExampleBusinessObject">