考虑如下定义一个简单的DataTemplate:
<Page.Resources>
<DataTemplate x:Name="dTemplate" x:Key="DTemplate">
<Image x:Name="image"
Source="{Binding Source=imageSource, FallbackValue=./DesignData/foo.jpg}">
</Image>
</DataTemplate>
</Page.Resources>
其中imageSource是在后面的代码中适当定义的BitmapImage。
然后以正常方式在页面中的某处设置其使用
<ListView x:Name="listView" d:DataContext="{d:DesignData Source=./DesignData/SampleData.xaml}"
ItemsSource="{Binding oCollection}"
ItemTemplate="{StaticResource DTemplate}" >
</ListView>
其中oCollection是正确类型的可观察集合。
这一切在运行时都能正常工作。 问题是该页面不在VS的设计视图中呈现。 ListView(也不是图像)都不显示。 我发现的唯一修复是删除XAML中的两个显式绑定,如下所示:
Source="{Binding Source=, FallbackValue=./DesignData/Socrates.jpg}">
...
ItemsSource="{Binding}"
这显然不是一个好的解决方案,因为它现在不会运行。 我可以在后面的代码中修复ItemsSource绑定,如下所示
thisPage.listView.ItemsSource = oCollection;
但我无法想象如何修复DataTemplate中的Image源绑定。从环顾其他相关Q&amp;看起来试图在后面的代码中为DataTemplate设置绑定是非常难看的,并且是非推荐的。
关于如何修复XAML或背后代码的任何建议都非常感谢。