【发布时间】:2013-11-20 20:29:26
【问题描述】:
目标
使用 MVVM 标准在 DataGrid 的 RowDetails 模板中添加多个图像。
背景
我有一个带有 DataGrid 的检查窗口,用于保存损坏项目的描述以及检查员的姓名首字母。更重要的是,这个DataGrid的RowDetailsTemplate需要保存检查员拍摄的损坏物品的照片(因此损坏物品的照片可能不止一张)。
问题
我有一个 DamagedWindow.xaml,旨在创建我的 DamagedItem 条目。它看起来像这样:
数据网格 (.XAML)
<DataGrid ItemsSource="{Binding Pictures}" SelectedItem="{Binding SelectedPicture}" AutoGenerateColumns="False" Grid.Column="1" Grid.Row="2" Margin="5" HorizontalAlignment="Stretch" Name="DataGrid1" VerticalAlignment="Stretch" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Titre" Binding="{Binding Name}" Width="*" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<Image Height="100" Source="{Binding Path}" />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
如您所见,我的 RowDetails 模板在此 DataGrid 中运行良好。我有一个名为 PicturesList 的类,它继承了我的 PictureModel(Name, Description, Path) 的 ObservableCollection。
您在 DataGrid 上方看到的文本框是我的 DamagedItemModel 的属性(Description、Initiales、PicturesList)。因此,当用户单击接受(复选标记)按钮时,DamagedItem 将添加到 DamagedItemsList,然后从我的 MainWindow 将其设置为 DataGrid 的 ItemSource:
数据网格 (.XAML)
<DataGrid ItemsSource="{Binding Path=DamagedItems}" SelectedItem="{Binding Path=SelectedDamagedItem}" AutoGenerateColumns="False" Name="DataGrid1" Height="250" Margin="3" IsEnabled="True" CanUserAddRows="False" FontSize="16">
<DataGrid.Columns>
<DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description}"/>
<DataGridTextColumn Header="Initiales" Width="70" Binding="{Binding Initiales}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<Image Height="100" Source="{Binding Pictures.Path}" />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
在这里,当我选择行时,我得到一个空的 RowDetailsTemplate 结果......即使我的对象包含我的图像。详情见下文:
所以这是我的问题,是否可以在遵循 MVVM 标准的同时将多个图像添加到 DataGrid 中的 RowDetailsTemplate?如果是,我做错了什么?
【问题讨论】:
标签: wpf vb.net mvvm datagrid rowdetailstemplate