C# WPF数据网格未更新

C# WPF数据网格未更新,c#,wpf,C#,Wpf,嗨,这似乎有不同的原因,我试了一些,但似乎不起作用 我的设想是: 我向集合中添加一个项,作为网格的数据源链接,然后运行命令行或其他代码 问题 第一行显示,但之后我可以添加行,但它们不会显示在网格中 我的代码: 看法 不起作用:您应该尝试将ObservableCollection设置为as属性,并将ItemsSource绑定到它。 大概是这样的: <DataGrid ItemsSource="{Binding stepResult}"/> progress.DataContext =

嗨,这似乎有不同的原因,我试了一些,但似乎不起作用

我的设想是:
我向集合中添加一个项,作为网格的数据源链接,然后运行命令行或其他代码

问题

第一行显示,但之后我可以添加行,但它们不会显示在网格中

我的代码:

看法


不起作用:

您应该尝试将ObservableCollection设置为as属性,并将ItemsSource绑定到它。 大概是这样的:

<DataGrid ItemsSource="{Binding stepResult}"/>
progress.DataContext = this;

这应该行得通。至少对我来说几乎总是这样。

如果所有操作都在UI线程中运行,UI将在空闲阶段之前不会更新。如果需要在UI线程内部而不是后台线程中运行它,您仍然可以使用Dispatcher调用空闲操作以更新UI。然后运行命令行或其他一些代码。这是什么意思?显示完整代码。填充集合后是否尝试设置数据源?是否生成集合的新实例?我尝试再次设置ItemsSource,但没有成功。我没有创建CollectionStepResult的新实例INotifyPropertyChanged接口?或者尝试将ItemsSource设置为另一个集合且不为null。我听说,WPF有时会在将源代码设置为null时遇到问题。这也没有帮助。真想不到这么难。我是WPF的新手,但似乎是一个相当琐碎的任务。然后我就不知道了。我不能复制它,因为这在大多数情况下对我有效。
progress.UpdateLayout();
progress.ItemsSource = null;
progress.ItemsSource = stepResults;
<DataGrid ItemsSource="{Binding stepResult}"/>
private ObservableCollection<StepResult> _stepResults;
public ObservableCollection<StepResult> StepResults
{
    get { return _stepResults; }
    set
    {
        if (_stepResult == value)
            return;
        _stepResults = value;
        OnPropertyChanged();
    }
}
progress.DataContext = this;