Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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
.net DataGrid未更新对象列表中的行_.net_Wpf_Data Binding_Binding_Properties - Fatal编程技术网

.net DataGrid未更新对象列表中的行

.net DataGrid未更新对象列表中的行,.net,wpf,data-binding,binding,properties,.net,Wpf,Data Binding,Binding,Properties,我已经在另一个项目中使用了这些东西,但现在没有了。 我不知道为什么 <DataGrid.Columns> <DataGridTextColumn Header="N°" Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}" Width="SizeToCells" MinWidth="30" Is

我已经在另一个项目中使用了这些东西,但现在没有了。 我不知道为什么

        <DataGrid.Columns>
            <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />

            <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
            <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
        </DataGrid.Columns>
    </DataGrid>
  • 将DataGrid ItemsSource设置为
    {Binding}
  • 创建(myclass的)新列表
  • 创建公共列表
    Dim MyList作为新列表(myclass)
  • 创建实例时绑定
    DataGrid.DataContext=MyList
  • 将DataGrid列定义设置为myclass属性上的某些项
  • 我在名单上加了我的第一堂课
    MyList.Add(新建myclass())
    现在,此项可见。但是在创建实例之后,在datagrid可见之后,这些行不会更新。
    MyList.Add(New myclass())
    并且没有第二行可见

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    
    只有在做
    MyDataGrid1.Items.Refresh
    项目已正确更新。 但就我所知,类的列表已经包括了
    INotifyPropertyChanged
    接口

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    
    你知道它为什么失败吗

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    
    这里有一些附加代码

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    
    实例:

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    
    Public Sub New()
    
        ' This call is required by the designer.
        InitializeComponent()
    
        Me.dgv.ItemsSource = Me.ListData
        Me.ListData.Clear()
        Dim item As New clsQueueItem
        item.FromString("Hallo")
        Me.AddItem(item)
    End Sub
    
    这是可见的,但在初始化页面后添加新行时,项目不会更新,需要使用
    dgv.items.Refresh
    ,我不明白为什么。

    使用ObservableCollection(myclass的)而不是list。添加或删除项目时,您将看到更改

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    
    编辑

            <DataGrid.Columns>
                <DataGridTextColumn         Header="N°"                 Binding="{Binding Path=LineNumber, StringFormat='{}{0:000}'}"           Width="SizeToCells"     MinWidth="30" IsReadOnly="True"  />
    
                <DataGridTextColumn         Header="HEX"                Binding="{Binding HexText}"         Width="SizeToHeader"    MinWidth="80" IsReadOnly="True"  FontWeight="Bold"                    />
                <DataGridTextColumn         Header="TextNormalized"     Binding="{Binding Description}"     Width="*"     MinWidth="80" IsReadOnly="True"  FontSize="12"       />
            </DataGrid.Columns>
        </DataGrid>
    

    多快的回答啊。谢谢。现在我明白了,为什么我的另一个(我的第一个)项目成功了。因为我没有这样使用更新的行。谢谢你,亲爱的布林梅斯。VS现在抛出一个错误,因为我需要在Dispatcher线程中添加和删除项。有没有办法避免进入UI线程,即调度程序线程?您必须将它们添加到UI线程中。最简单的方法是将您的添加和删除委派给ui线程。下面是一个很好的线程,它是如何在今天工作的,也可能在下一个.net中工作的