我得到了这个例外:
'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>
据我所知,这通常是由静态资源扩展指向不可用的东西引起的,但是我知道模板应该在那时可用。
答案 0 :(得分:5)
我建议删除上面提到的数据类型或从itemscontrol中删除itemtemplate。
您收到此错误的原因是您提供了2个相互冲突的信息。通过设置数据类型,只要对象类型是ExampleBusinessObject,就告诉WPF使用此数据窗口。通过设置ItemTemplate,您告诉WPF始终使用此datatemplate。使用其中一个。
答案 1 :(得分:0)
XAML伪装成xml,但有时有时顺序却很重要。将DataType放在x:key之后。
<DataTemplate x:Key="BusinessObjectTemplate" DataType="me:ExampleBusinessObject">