在DataTemplate中绑定Image.Source的问题

时间:2016-08-23 00:47:35

标签: c# wpf xaml

考虑如下定义一个简单的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或背后代码的任何建议都非常感谢。

0 个答案:

没有答案