添加行时出现WPF Datagrid问题(数据未同步)

k97glaaz  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(223)

我有一个数据网格,我正在用一个对象填充它。假设客户,每个客户都有一个项目。我有一个按钮,可以向数据网格中添加一个客户,并随机添加一个项目。如果我不断向数据网格中添加客户,直到客户的数量超过数据网格的高度(这会导致出现滚动)在我按下该点之前,该点以外的数据不准确我通过增加数据网格的高度来测试它,当我开始插入那些没有出现在我的视图中的行时(直到我向下滚动),数据似乎没有正确同步。我怀疑这是同步/初始化问题。
我的数据网格xaml:

<DataGrid x:Name="DG" HorizontalAlignment="Left" Height="291" Margin="706,84,0,0" VerticalAlignment="Top" Width="300"
              ItemsSource="{Binding CustomersList}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Customer" Binding="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="*"/>

            <DataGridTemplateColumn Header="Item" Width="*">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <local:CustomComboBox SelectedItem="{Binding Item, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                            ItemsSource="{Binding DataContext.ItemsList, ElementName=MainWind}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

自定义组合框

<Grid DataContext="{Binding ElementName=Root}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="30"/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <!-- Image at the side of the ComboBox -->
    <Image Height="30" Width="30" Grid.Column="0"
           Source="{Binding SelectedItem.Type, Converter={StaticResource ImageConverter}}"/>

    <!-- Actual ComboBox -->
    <ComboBox x:Name="CustomCombo" Grid.Column="1" 
              IsTextSearchEnabled="False" IsReadOnly="True" KeyDown="CustomCombo_KeyDown"
              DropDownOpened="CustomCombo_DropDownOpened" DropDownClosed="CustomCombo_DropDownClosed"
              Loaded="CustomCombo_Loaded"
              IsEditable="True" TextSearch.TextPath="Name"
              Text="{Binding Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
              SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
              ItemsSource="{Binding ItemsSource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <!-- StackPanel consisting of an Image and TextBlock as ItemTemplate-->
                    <Image Height="30" Width="30"
                           Source="{Binding Path=Type, Converter={StaticResource ImageConverter}}"/>
                    <TextBlock Text="{Binding Path=Name}" VerticalAlignment="Center"/>
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</Grid>

我不知道这个问题的专业术语来寻找解决方案。

mklgxw1f

mklgxw1f1#

给github.com/melsawy93/WPFTestAppBug
这个存储库有很多问题。
首先,存储库本身的创建不正确。它应该包含忽略和属性文件。由于它们的缺失,很多额外的文件进入了存储库,包括.vs,bin,obj文件夹。它们的存在在每次提交时增加了很多想象中的更改。
尝试通过Git Visual Studio菜单创建一个新的空仓库。你会在那里看到忽略和属性文件。将它们复制到你的仓库中。并使用CitHub Web界面删除其中多余的文件夹。
我将在这里发布需要对源代码进行的更改:

主窗口。

第一个

自定义组合框

第一个

**P.S.**请记住,我并没有修复所有的bug。只修改了本主题顶部的问题的解决方案。

相关问题