C# Datagrid itemsource双向数据绑定不工作

C# Datagrid itemsource双向数据绑定不工作,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我尝试用datagrid构建一个基于wpf的应用程序,itemsource绑定到一个对象 Xaml 整个问题就在这里,当我从一行更改内容时,它不会在集合对象上更改。我做错了什么?我可以看到您的代码中至少有以下两个问题: DataGrid从不修改ItemsSource引用本身(仅其“内容”),因此不应设置Mode=TwoWay 大多数WPF设计用于处理实现的集合数据类型绑定列表未实现此接口。因此,您最好使用实现此接口的ObservableCollection 此外, public BindingL

我尝试用datagrid构建一个基于wpf的应用程序,itemsource绑定到一个对象

Xaml


整个问题就在这里,当我从一行更改内容时,它不会在集合对象上更改。我做错了什么?

我可以看到您的代码中至少有以下两个问题:

  • DataGrid
    从不修改
    ItemsSource
    引用本身(仅其“内容”),因此不应设置
    Mode=TwoWay
  • 大多数WPF设计用于处理实现的集合数据类型<代码>绑定列表未实现此接口。因此,您最好使用实现此接口的
    ObservableCollection
  • 此外,

    public BindingList Folders { get; set; }
    
    似乎不正确,如果您的
    BindingList
    是这一个:。也许应该是这样

    public BindingList<Folder> Folders { get; set; }
    
    publicbindinglist文件夹{get;set;}
    

    但可能这只是您问题中的一个输入错误。

    您对数据绑定有一些混淆。以下是一些提示:


    双向绑定
    s用于显示并可以编辑数据绑定值的控件,而不是容器控件的属性。。。这意味着在
    ItemsSource
    属性上设置
    Mode=“Two-Way”
    没有意义,因为如果查看MSDN上的页面,您会发现它只支持
    单向绑定

    如前所述,设置
    Mode=“Two-Way”
    只能用于可以显示和编辑数据绑定值的控件。但是,如果您查看MSDN页面,应该会看到一个名为Dependency Property Information的部分。在本节中,您可以看到默认情况下,
    Textbox.Text
    属性绑定
    双向
    ,因此您不必对其应用该设置

    因此,当您说您的解决方案是使用以下方法时:

    <TextBox Grid.Column="0" Text="{Binding Path, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ... />
    

    您的Datagrid itemsource双向数据绑定不工作标题完全无效,并且没有描述您的问题。你认为对
    itemsource
    属性进行
    双向绑定
    会有什么作用?你有没有试过在绑定中放置一个UpodateSourceTrigger,比如,“{Binding Folders,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}”@Bearcat9425,如果你不知道答案,不要提出建议。。。您只是在显示您缺乏数据绑定方面的知识。您认为ItemsSource属性上的双向绑定会有什么作用??或者在显示并可以编辑数据绑定值的控件上使用
    更新资源触发器
    双向绑定
    s,而不是容器控件的属性。。。但不是
    TextBox
    es,因为它们将
    Mode=TwoWay
    设置为默认值(再次…从MSDN,
    TextBox
    page)。。。始终使用MSDN。@zero\u编码,然后我会将这些有用的信息添加到答案中。
    public class Folder : ObservableObject
    {
        private String _path;
        private OsType _os;
        private String _strOs;
    
        public String Path
        {
            get { return _path; }
            set { _path = value; RaisePropertyChanged(() => this.Path); }
        }
    
        public OsType Os
        {
            get { return _os; }
            set { _os = value; RaisePropertyChanged(() => this.Os); }
        }
    
        public String StrOs
        {
            get { return _strOs; }
            set { _strOs = value; RaisePropertyChanged(() => this.StrOs); }
        }
    }
    
    public BindingList Folders { get; set; }
    
    public BindingList<Folder> Folders { get; set; }
    
    <TextBox Grid.Column="0" Text="{Binding Path, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ... />
    
    <TextBox Grid.Column="0" Text="{Binding Path, UpdateSourceTrigger=PropertyChanged}" ... />