Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 子项控件不显示图片_Wpf_Xaml_Itemscontrol_Collectionviewsource - Fatal编程技术网

Wpf 子项控件不显示图片

Wpf 子项控件不显示图片,wpf,xaml,itemscontrol,collectionviewsource,Wpf,Xaml,Itemscontrol,Collectionviewsource,我有一个ListView,其中的项包含一个嵌套的ItemsControl,其中包含一些TextBlock和一个Image控件 private string _PicturePreview; public string PicturePreview { get => _PicturePreview; set => _PicturePreview = value; } 我现在已将ListView的源更改为CollectionViewSource以对项目进行分组。所有的东

我有一个ListView,其中的项包含一个嵌套的ItemsControl,其中包含一些TextBlock和一个Image控件

    private string _PicturePreview;
    public string PicturePreview { get => _PicturePreview; set => _PicturePreview = value; }
我现在已将ListView的源更改为CollectionViewSource以对项目进行分组。所有的东西都能很好地呈现ListView中的图片,但由于某种原因,嵌套ItemsControl中的图像不再加载。当我切换回不带CollectionViewSource的直接绑定时,图像加载正常

有人知道为什么吗

    <UserControl.Resources>

    <CollectionViewSource x:Key="Sales" Source="{Binding Bestellungen}" >

        <CollectionViewSource.GroupDescriptions>

            <PropertyGroupDescription PropertyName="OrderTyp"/>

        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>

</UserControl.Resources>

<ListView Name="OrdersListView" Grid.Row="1" 
              ItemsSource="{Binding Source={StaticResource Sales}}"            
              SelectedItem="{Binding SelectedBestellung}" 
              AlternationCount="2" 
              IsSynchronizedWithCurrentItem="True" 
              ScrollViewer.CanContentScroll="False"
              >

        <ListView.GroupStyle>
            <GroupStyle>
                <GroupStyle.ContainerStyle>
                    <Style TargetType="{x:Type GroupItem}">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate>
                                    <Expander IsExpanded="True" >

                                        <Expander.Header>

                                            <DockPanel Background="#162270"  Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Expander}}, Path=ActualWidth}" >
                                                <TextBlock FontWeight="Bold" FontSize="24" Foreground="White" Text="{Binding Path=Name}" Margin="10" />


                                            </DockPanel>
                                        </Expander.Header>
                                        <Expander.Content>
                                            <ItemsPresenter />
                                        </Expander.Content>
                                    </Expander>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </GroupStyle.ContainerStyle>
            </GroupStyle>
        </ListView.GroupStyle>

        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Style.Triggers>
                    <Trigger Property="ItemsControl.AlternationIndex"  Value="0">
                        <Setter Property="Background" Value="White" />
                    </Trigger>
                    <Trigger Property="ItemsControl.AlternationIndex"  Value="1">
                        <Setter Property="Background" Value="#f2f2f2" />

                    </Trigger>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="BorderThickness" Value="2"/>
                        <Setter Property="BorderBrush" Value="Red"/>
                    </Trigger>
                </Style.Triggers>

                <Setter Property="FontSize" Value="16"/>
                <Setter Property="BorderBrush" Value="Black"></Setter>
                <Setter Property="BorderThickness" Value="0,0,0,2"></Setter>
                <Setter Property="VerticalContentAlignment" Value="Top"/>
                <Setter Property="FrameworkElement.Margin" Value="5"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.View>
            <GridView>
                <GridView.Columns>

                    <GridViewColumn Header="Order">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Belegnummer}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>


                    <GridViewColumn Header="Positionen" Width="800">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <ItemsControl ItemsSource="{Binding Positionen}" >
                                    <ItemsControl.ItemTemplate>
                                        <DataTemplate>
                                            <Grid Margin="0,0,10,5">

                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="50" />
                                                    <ColumnDefinition Width="auto" />
                                                </Grid.ColumnDefinitions>

                                                <Image Width="50" Height="50" Source="{Binding PicturePreview, IsAsync=True}"/>
                                                <StackPanel Grid.Column="1" Orientation="Vertical">

                                                    <DockPanel>
                                                        <TextBlock Text="Stück: " FontWeight="Bold" FontSize="18"/>
                                                        <TextBlock Text="{Binding Stück, StringFormat=N0}" FontWeight="Bold" FontSize="18"/>
                                                    </DockPanel>

                                                </StackPanel>

                                            </Grid>
                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>

                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

                    <GridViewColumn >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Vertical">
                                    <Image Source="{Binding VersandartNummer, Converter={StaticResource StringToBitmapConverter}}" MaxHeight="100" MaxWidth="100"/>

                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>


                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>

不确定为什么确切地设置
IsAsync=True
与CollectionViewSource一起不起作用,但无论如何设置它都是毫无意义的。
PicturePreview的getter根本不做任何耗时的事情,因此不需要异步调用它

因此,只需从绑定中删除
IsAsync

 <Image ... Source="{Binding PicturePreview}"/>


请注意,从字符串到ImageSource的内置类型转换会创建一个位图帧,该位图帧已经异步加载,以防URL字符串引用web资源。

您的意思是
绑定Stück
可以工作,但
绑定PicturePreview
不能工作?@Clemens是的,除了PicturePreview之外,所有绑定都可以工作。但仅当我使用CollectionViewSource时。当我将直接绑定到ListView时,它工作正常。当您删除
IsAsync=True
?不过这没什么区别…@Clemens哇,现在它起作用了。似乎CollectionViewSource没有从异步任务中得到更新。了解为什么您认为IsAsync是必需的,这仍然很有趣。如前所述,它不是,除非您在属性getter中执行一些耗时的操作,例如同步加载BitmapSource。