目标
使用MVVM标准,在DataGrid的RowDetails模板中添加多个图像。
背景
我有一个检查窗口,其中包含一个DataGrid,用于保存损坏物品的描述以及检查员的姓名首字母缩写。此外,这个DataGrid的RowDetails模板需要保存检查员拍摄的损坏物品照片(因此可能会有多张照片)。
问题
我有一个DamagedWindow.xaml,用于创建我的DamagedItem条目。它看起来像这样:
DataGrid (.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的类,继承了一个ObservableCollection Of my PictureModel(
Name
, Description
, Path
)。
您在DataGrid上方看到的文本框是我的DamagedItemModel (
Description
, Initiales
, PicturesList
)的属性。因此,当用户点击接受(勾选)按钮时,DamagedItem将被添加到DamagedItemsList中,然后将其设置为MainWindow中DataGrid的ItemSource:
DataGrid (.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为空...尽管我的对象包含图片。请参见以下详细信息:
所以我的问题是,是否可以在DataGrid中添加多个图像到RowDetailsTemplate并遵循MVVM标准?如果可以,我做错了什么?