UWP XAML绑定一个Observable Collection类属性

时间:2016-01-12 17:58:35

标签: c# wpf xaml data-binding uwp

我有一个问题 - 我想将一个类属性绑定到GridView,这是一个ObservableCollection。

班级代码:

public class Moment
{
  ...
  public ObservableCollection<Uri> PhotoFilePath { get; set; }
}



XAML

<GridView Grid.Row="0"
              Name="PhotosGridView"
              ItemsSource="{x:Bind moment}"> 

时刻是MainPage.xaml中的Moment实例

       <GridView.ItemTemplate>
            <DataTemplate x:DataType="data:Moment">

                <Image Width="75"  Height="75">
                    <Image.Source>
                        <BitmapImage UriSource="{x:Bind PhotoFilePath}" />

我明白了 严重性代码描述项目文件行抑制状态 错误无效的绑定路径&#39; PhotoFilePath&#39; :无法绑定类型&#39; System.Collections.ObjectModel.ObservableCollection(System.Uri)&#39;到&#39; System.Uri&#39;没有转换器

                    </Image.Source>
                </Image>



            </DataTemplate>
       </GridView.ItemTemplate>

    </GridView>

提前致谢

2 个答案:

答案 0 :(得分:2)

你现在拥有它的方式似乎没有意义。 momentMoment的实例,而不是事物列表(ItemsSource期望的内容)。事情列表是PhotoFilePath上的Moment属性(除此之外,由于它是一个集合而不是单一路径,因此名称很少。)

我假设你真正想做的是将ItemsSource绑定到moment.PhotoFilePath

ItemsSource="{x:Bind moment.PhotoFilePath}"> 

您需要将DataTemplate更改为仅定位到Uri:

<DataTemplate x:DataType="Uri"> 

请注意,如果你能在那里说“Uri”,我并不积极。我面前没有UWP项目。

然后UriSource到该属性内的每个项目:

<BitmapImage UriSource="{x:Bind}" />

答案 1 :(得分:0)

BitmapImage的UriSource属性需要类型'System.Uri' 但是你试图将它绑定到'ObservableCollection of System.Uri'

(Moment类的PhotoFilePath属性是System.Uri的ObservableCollection)

答案在错误消息中 '无法将类型'System.Collections.ObjectModel.ObservableCollection(System.Uri)'绑定到'System.Uri'