在 WPF ItemsControl 中绑定以下列表中的对象

Bind objects in the lists below in WPF ItemsControl

我需要在 ItemsControl 中绑定以下列表的对象,在 中绑定wpf 中的 ScrollViewer 。 我 Provand 分配了一个路径,但我仍然无法绑定,也许我错了?在第一级的主题中绑定成功,但是当我在同一对象的下面的列表中进行绑定时,绑定将不起作用。

Xaml 滚动查看器:

<surface:SurfaceScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Hidden" Background="#fff" PanningMode="VerticalOnly">
                    <ItemsControl x:Name="scrollViewerFolderItemsSource"  ItemsSource="{Binding Path=companies}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <surface:SurfaceButton Tag="{Binding CPID}" Click="Open_Click" Grid.ColumnSpan="2">
                                        <Button.Template>
                                            <ControlTemplate TargetType="{x:Type Button}">
                                                <Border BorderThickness="0,1,0,0" BorderBrush="Gray" Height="57" Background="White">
                                                    <Grid>
                                                        <Grid.ColumnDefinitions>
                                                            <ColumnDefinition Width="80"></ColumnDefinition>
                                                            <ColumnDefinition Width="*"></ColumnDefinition>
                                                        </Grid.ColumnDefinitions>
                                                        <Grid.RowDefinitions>
                                                            <RowDefinition Height="60"/>
                                                        </Grid.RowDefinitions>
                                                        <Grid Grid.Row="0" Background="#fff"></Grid>
                                                        <Image Grid.Row="0" Grid.Column="0" Width="32" VerticalAlignment="Center" HorizontalAlignment="Center" Source="{Binding ImageFolder}"></Image>
                                                        <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding CompanyName}" Foreground="#565656" FontFamily="{StaticResource Lato Semibold}" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" Margin="10,3,0,0" Style="{DynamicResource Lato-Semibold}"/>
                                                        <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding companies.Attachments.Name}" Foreground="#565656" FontFamily="{StaticResource Lato Semibold}" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" Margin="10,3,0,0" Style="{DynamicResource Lato-Semibold}"/>
                                                        <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding AttachmentFolders.Name}" Foreground="#565656" FontFamily="{StaticResource Lato Semibold}" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" Margin="10,3,0,0" Style="{DynamicResource Lato-Semibold}"/> 
                                                    </Grid>
                                                </Border>
                                            </ControlTemplate>
                                        </Button.Template>
                                    </surface:SurfaceButton>
                                </StackPanel>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </surface:SurfaceScrollViewer>

绑定的CodeBehind视图列表:

我的目标是绑定 Text="{绑定 companies.Attachment.Name}"

如果我打印 Text="{Binding Attachment}" 我在部署时打印的结果是 "(Collection)", 为什么打印Attachment.Name ?

Attachments 是一个 Collection,要可视化一个集合,您应该使用 ListBox 并使用此绑定 ItemsSource="{Binding companies.Attachment}",您还需要为 ListBox 定义 ItemTemplate。

使用 ListBox 可以显示所有元素,但如果只想显示第一个附件名称,可以使用此绑定 Text="{Binding companies.Attachment[0].Name}"

或者另一种解决方案可能是创建一个名为 AttachmentToShow 的新 属性 类型的附件并使用此绑定

Text="{Binding AttachmentToShow.Name}"

使用此解决方案更新 AttachmentToShow 将导致 UI 更新。