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

C# 在WPF ItemsControl中绑定以下列表中的对象,c#,wpf,xaml,scrollviewer,itemscontrol,C#,Wpf,Xaml,Scrollviewer,Itemscontrol,我需要在wpf中的滚动查看器中绑定项目控件中绑定下面列表的对象。 我验证并指定了一个路径,但我仍然无法绑定,也许我错了?在第一级的主题中,绑定是成功的,但是当我进入下面的列表时,相同对象的绑定将不起作用 Xaml Scrollviewer: <surface:SurfaceScrollViewer Grid.Row="2" VerticalScrollBarVisibility="Hidden" Background="#fff" PanningMode="VerticalOnly">

我需要在wpf中的滚动查看器中绑定项目控件中绑定下面列表的对象。 我验证并指定了一个路径,但我仍然无法绑定,也许我错了?在第一级的主题中,绑定是成功的,但是当我进入下面的列表时,相同对象的绑定将不起作用

Xaml Scrollviewer:

<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>

代码隐藏视图列表已绑定:

<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>

我的目标是绑定Text=“{binding companys.Attachment.Name}”


如果我打印Text=“{Binding Attachment}”我在部署时的结果打印是“(集合)”,为什么打印Attachment.Name

Attachments是一个集合,要可视化集合,您应该使用列表框并使用此绑定
ItemsSource=“{Binding companys.Attachment}”
,您还需要为列表框定义ItemTemplate

使用列表框,您可以可视化所有元素,但如果您只想显示第一个附件名称,则可以使用此绑定
Text=“{binding companys.attachment[0].name}”

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

Text=“{Binding AttachmentToShow.Name}”


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

有一种方法可以在代码中的[0]上添加动态索引?请参阅,其中一致意见是“不,他们不应该”!