Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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 将项添加到ObservableCollection时Datagrid未更新_Wpf_Data Binding_Datagrid_Observablecollection - Fatal编程技术网

Wpf 将项添加到ObservableCollection时Datagrid未更新

Wpf 将项添加到ObservableCollection时Datagrid未更新,wpf,data-binding,datagrid,observablecollection,Wpf,Data Binding,Datagrid,Observablecollection,我有一个客户实体,它有一组注释 我的视图中有一个DataGrid,它被数据绑定到我的Client.AuditableNotes集合,我可以看到数据库中已经存在的注释。但是,如果我将新的AuditableNote添加到集合中,它不会出现吗 My ClientEditViewModel的客户端属性具有以下内容: //Backing Field private Client _client; . . . //Property public Client Client { get { r

我有一个客户实体,它有一组注释

我的视图中有一个DataGrid,它被数据绑定到我的Client.AuditableNotes集合,我可以看到数据库中已经存在的注释。但是,如果我将新的AuditableNote添加到集合中,它不会出现吗

My ClientEditViewModel的客户端属性具有以下内容:

    //Backing Field
private Client _client;
.
.
.
//Property
public Client Client
{
    get { return _client; }
    set
    {
        _client = value;
        RaisePropertyChanged("Client");
    }
}
//Upon my NoteEdit usercontrol returning control back to clienteditviewmodel
public void NoteEditFinished(AuditableNote note)
{
    if (note != null)
    {
        note.AddedBy = _dbContext.SystemUsers.First();
        if (note.AuditableNoteId == 0)
        {
            if (this.Client.AuditableNotes != null)
            {
                this.Client.AuditableNotes.Add(note);
            }
            else
            {
                List<AuditableNote> notes = new List<AuditableNote>();
                notes.Add(note);
                this.Client.AuditableNotes = notes;
            }
        }
        else
        {
             AuditableNote existingNote = this.Client.AuditableNotes.Where(an => an.AuditableNoteId == note.AuditableNoteId).First();
            existingNote = note;
        }
    }
}
//支持字段
私人客户;
.
.
.
//财产
公共客户端
{
获取{return\u client;}
设置
{
_客户=价值;
RaiseProperty变更(“客户”);
}
}
//在我的NoteEdit usercontrol将控件返回给ClientEdit ViewModel时
公共作废注释EditFinished(可审核注释)
{
如果(注意!=null)
{
note.AddedBy=_dbContext.SystemUsers.First();
如果(note.AuditableNoteId==0)
{
if(this.Client.AuditableNotes!=null)
{
this.Client.AuditableNotes.Add(note);
}
其他的
{
列表注释=新列表();
注:增加(注);
this.Client.AuditableNotes=注释;
}
}
其他的
{
AuditableNote existingNote=this.Client.AuditableNotes.Where(an=>an.AuditableNoteId==note.AuditableNoteId.First();
现有注释=注释;
}
}
}
我的数据网格定义如下:

<DataGrid Name="grdNotes" MinWidth="180" 
          ItemsSource="{Binding Client.AuditableNotes, Mode=TwoWay}" 
          AutoGenerateColumns="False" 
          Background="Transparent"
          RowBackground="Transparent"
          IsReadOnly="True"
          SelectedItem="{Binding SelectedNote}"
          HorizontalScrollBarVisibility="Auto"
          DataContext="{Binding}">
    <DataGrid.Columns>
        <DataGridTemplateColumn
            Header="Warning">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Image x:Name="MyImage" Width="25" Height="20"/>
                    <DataTemplate.Triggers>
                        <DataTrigger Binding="{Binding Warning}" Value="True">
                            <Setter Property="Source" TargetName="MyImage" Value="/Assets/Images/symbol_error.png"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Warning}" Value="False">
                            <Setter Property="Source" TargetName="MyImage" Value="/Assets/Images/symbol_information.png"/>
                        </DataTrigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Note" Binding="{Binding Note, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="290"/>
        <DataGridTextColumn Header="Added By" Binding="{Binding AddedBy, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
        <DataGridTextColumn Header="Date Added" Binding="{Binding DateAdded, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="*"/>
    </DataGrid.Columns>
</DataGrid>

DataContext=“{Binding}”
通常是毫无意义的,而且
ItemsSource
不绑定回源,
TwoWay
什么也不做。此外,
客户机
类代码也很重要,而且绑定的集合肯定不能保证是可见的,您将其设置为一个普通的
列表
,您期望什么…我期望什么???数据网格,以反映向集合中添加的项?