嗨似乎有不同的原因,我尝试了其中一些,但它似乎没有用。
我的情景是:
我将一个项目添加到datasource
的{{1}}链接到grid
,然后运行命令行或其他代码。
问题
第一行显示但之后我可以添加行但它们不会显示在grid
中。
我的代码:
查看
<DataGrid Margin="5" Name="progress"
AutoGenerateColumns="False"
CanUserAddRows="False"
SelectionMode="Extended"
SelectionUnit="Cell"
Height="150"
ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="" Width="370" Binding="{Binding Action}" IsReadOnly="True" />
<DataGridTextColumn Header="" Width="100" Binding="{Binding Success}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
代码
ObservableCollection<StepResult> stepResults;
stepResults = new ObservableCollection<StepResult>();
progress.DataContext = stepResults;
private void Updater_StepStart(object sender, ScriptInterpreter.Events.StepEventArguments e)
{
stepResults.Add(new StepResult
{
Action = e.StepName,
Success = true
});
}
到目前为止我尝试了什么:
progress.UpdateLayout();
progress.ItemsSource = null;
progress.ItemsSource = stepResults;
没有什么工作:(
答案 0 :(得分:1)
您应该尝试将ObservableCollection设置为Property并将ItemsSource绑定到它。 像这样:
<DataGrid ItemsSource="{Binding stepResult}"/>
Code-Behind:
private ObservableCollection<StepResult> _stepResults;
public ObservableCollection<StepResult> StepResults
{
get { return _stepResults; }
set
{
if (_stepResult == value)
return;
_stepResults = value;
OnPropertyChanged();
}
}
并设置DataContext,如下所示:
progress.DataContext = this;
这应该有效。至少它几乎总是为我做的。