如何添加WPF按钮以将内容添加到ObservableCollection中的List?

时间:2018-06-11 16:21:09

标签: c# wpf mvvm binding observablecollection

从数据库我收到一个包含多个属性的列表。其中一个属性再次是包含ID信息和图像的附录对象的列表。 我将该List转换为ObservableCollection并将其绑定到WPF ListBox。使用DataTemplate我展示了这个内容。在DataTemplate内部,我现在有一个绑定到内部列表的ItemControl(我的附录没有,一个或多个条目):

<ListBox ItemsSource="{Binding Reports}">
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal">
                <Label Content="Report Date:" FontWeight="Bold"/>
                <Label Content="{Binding ReportDate.Date, StringFormat=dd.MM.yyyy , ConverterCulture=de-DE}"/>
                <Label Content="Comment:" FontWeight="Bold"/>
                <Label Content="{Binding Comment}"/>
            </StackPanel>

            //Here I would like to have a Button to add a Picture into the Appendix List

            <ItemsControl x:Name="SelectedOnlyListBox" ItemsSource="{Binding Appendix}" Visibility="Collapsed">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VirtualizingStackPanel IsItemsHost="True" Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>

                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding Picture}"/>
                        </StackPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>

        </StackPanel>
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}, AncestorLevel=1}, Path=IsSelected}" Value="True">
                <Setter Property="Visibility" Value="Visible" TargetName="SelectedOnlyListBox" />
            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>
</ListBox.ItemTemplate>

我的问题是,如何通过绑定到我的代码中获取当前对象。因为我将为一个外部列表(报告)条目提供多个按钮。但Button应该只添加到正确的内部列表(附录)。

其他信息:我正在使用MVVM-Light Toolkit。 非常感谢你。

编辑:我忘了提到第一个List是详细类的许多属性之一,它再次出现在所有详细信息的列表中。因此,我的DataContext已经获得了一个属性“SelectedDetail”。这个我知道的...... 但是,我现在如何将每个SelectedDetail.Report的特定Button与我的SelectedDetail.Reports.Appendix匹配?

0 个答案:

没有答案