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
WPF:与ListView的数据绑定获取错误:";在使用ItemsSource“之前,Items集合必须为空;_Wpf_Data Binding - Fatal编程技术网

WPF:与ListView的数据绑定获取错误:";在使用ItemsSource“之前,Items集合必须为空;

WPF:与ListView的数据绑定获取错误:";在使用ItemsSource“之前,Items集合必须为空;,wpf,data-binding,Wpf,Data Binding,我正在尝试将ListView数据绑定设置为ObservableCollection。我还为列表视图中的每个项目添加了带有检查权限的上下文菜单。因此,我得到一个错误:“在使用ItemsSource之前,Items集合必须为空”。但是如果我在ListView中删除ItemsSource,我就不能使用数据绑定。 你能帮助我吗?您可以在以下位置下载示例: 对于列表视图中的项,您只能有一个源,在这种情况下,您似乎在XAML中显式设置列表视图.items集合。这将导致您在尝试使用ItemsSource绑定时

我正在尝试将ListView数据绑定设置为ObservableCollection。我还为列表视图中的每个项目添加了带有检查权限的上下文菜单。因此,我得到一个错误:“在使用ItemsSource之前,Items集合必须为空”。但是如果我在ListView中删除ItemsSource,我就不能使用数据绑定。 你能帮助我吗?您可以在以下位置下载示例:


对于
列表视图中的项,您只能有一个源,在这种情况下,您似乎在XAML中显式设置
列表视图.items
集合。这将导致您在尝试使用ItemsSource绑定时看到的错误

可以尝试从XAML中删除
ListView.Items
节点,并且只使用
ItemsSource
绑定来填充列表


看起来您还需要使用
ListView.ItemTemplate
来设置项目的格式,并正确设置上下文菜单。

我在ItemContainerStyle中添加了上下文菜单,并取得了成功

<ListView Height="259" HorizontalAlignment="Left" Margin="12,26,0,0" Name="listView1" VerticalAlignment="Top" Width="479">                         
        <ListView.Resources>
            <ContextMenu x:Key="ItemContextMenu">                    
                <MenuItem Header="Kiểm tra">
                    <MenuItem.Icon>
                        <Image Source="Images/CompareFiles.png" Style="{StaticResource ImageContextMenu}"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="Download" Visibility="{Binding Path=Actions, Converter={StaticResource MenuContext}, ConverterParameter= {x:Static ObservableCollectionProblem:EnumUserAction.Download}}">
                    <MenuItem.Icon>
                        <Image Source="Images/SyncCurrentObject.png" Style="{StaticResource ImageContextMenu}"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="Upload" Visibility="{Binding Path=Actions, Converter={StaticResource MenuContext}, ConverterParameter = {x:Static ObservableCollectionProblem:EnumUserAction.Upload}}">
                    <MenuItem.Icon>
                        <Image Source="Images/upload.png" Style="{StaticResource ImageContextMenu}"/>
                    </MenuItem.Icon>
                </MenuItem>
            </ContextMenu>
        </ListView.Resources>
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <EventSetter Event="PreviewMouseLeftButtonDown" Handler="OnListViewItem_PreviewMouseLeftButtonDown" />
                <Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.View>                
            <GridView>                    
                <GridViewColumn Width="250" DisplayMemberBinding="{Binding Path=Name}" Header="Name"></GridViewColumn>
                <GridViewColumn Width="250" DisplayMemberBinding="{Binding Path=Actions, Converter={StaticResource ActionToStringConverter}}" Header="Action"></GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>


你可以举个例子。我想设计两列,它看起来像ListView,每个项目都有上下文菜单。我可以在GridViewColumn.CellTemplate中设置上下文菜单,但我认为如果我有很多列,我会重复很多次,这很愚蠢。我不想为您编写它,有很多将数据模板与ListView一起使用的示例:或者这是真的,您可能可以使用CellTemplate获得您想要的。
<ListView Height="259" HorizontalAlignment="Left" Margin="12,26,0,0" Name="listView1" VerticalAlignment="Top" Width="479">                         
        <ListView.Resources>
            <ContextMenu x:Key="ItemContextMenu">                    
                <MenuItem Header="Kiểm tra">
                    <MenuItem.Icon>
                        <Image Source="Images/CompareFiles.png" Style="{StaticResource ImageContextMenu}"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="Download" Visibility="{Binding Path=Actions, Converter={StaticResource MenuContext}, ConverterParameter= {x:Static ObservableCollectionProblem:EnumUserAction.Download}}">
                    <MenuItem.Icon>
                        <Image Source="Images/SyncCurrentObject.png" Style="{StaticResource ImageContextMenu}"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="Upload" Visibility="{Binding Path=Actions, Converter={StaticResource MenuContext}, ConverterParameter = {x:Static ObservableCollectionProblem:EnumUserAction.Upload}}">
                    <MenuItem.Icon>
                        <Image Source="Images/upload.png" Style="{StaticResource ImageContextMenu}"/>
                    </MenuItem.Icon>
                </MenuItem>
            </ContextMenu>
        </ListView.Resources>
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <EventSetter Event="PreviewMouseLeftButtonDown" Handler="OnListViewItem_PreviewMouseLeftButtonDown" />
                <Setter Property="ContextMenu" Value="{StaticResource ItemContextMenu}"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.View>                
            <GridView>                    
                <GridViewColumn Width="250" DisplayMemberBinding="{Binding Path=Name}" Header="Name"></GridViewColumn>
                <GridViewColumn Width="250" DisplayMemberBinding="{Binding Path=Actions, Converter={StaticResource ActionToStringConverter}}" Header="Action"></GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>