【问题标题】:Using Mode=TwoWay and AutogenerateColumns=True in Silverlight 3 DataGrid在 Silverlight 3 DataGrid 中使用 Mode=TwoWay 和 AutogenerateColumns=True
【发布时间】:2010-12-12 19:15:57
【问题描述】:

我的List<BusinessObject> 有一些我想绑定到DataGrid 中的列的公共属性。不幸的是,公共属性的名称并不好,我什至可能直到运行时才知道它们是什么。出于这个原因,我设置 AutoGenerateColumns=True 并拦截每个 DataGridAutoGeneratingColumnEvent,以便我可以检查它是什么,然后取消它、隐藏它或将标题命名为其他名称。

效果很好,但我不知道如何设置 Mode=TwoWay 以便在生成所有列并且有人编辑单元格后触发我的 INotifyPropertyChanged 事件。

奖金问题: 在上下导航网格的行时,网格的数据上下文是否会自动设置为该行的BusinessObject

【问题讨论】:

    标签: silverlight-3.0 datagrid binding autogeneratecolumn


    【解决方案1】:

    感谢this 的帖子,我了解到绑定发生在 DataGridTextColumn 上。所以在运行时设置Mode的方式是:

    1    private void DataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    2    {
    3        DataGridTextColumn tc = (DataGridTextColumn)e.Column;
    4        tc.Header = "Custom Header";
    5        tc.Binding.Mode = BindingMode.TwoWay;
    6    }
    

    现在我有了 TwoWay 绑定,我必须弄清楚更改如何使它返回到我的 BusinessObject。

    【讨论】:

      【解决方案2】:

      如果绑定正确,您的业务对象将自动接收所需的更新。要以编程方式进行绑定,您可能需要更多代码,例如:

      ...
      Binding binding = new Binding("Propertyname");
      tc.binding.Mode = BindingMode.TwoWay;
      ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-07
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 2014-10-27
        • 1970-01-01
        • 2011-07-10
        相关资源
        最近更新 更多