WPF DataGrid在只读属性上的双向绑定

时间:2015-08-26 15:29:16

标签: .net wpf c#-4.0 datagrid 2-way-object-databinding

我已经做了很多搜索,并发现了许多关于此的帖子,但仍然没有解决这个问题的简单方法。我有一个WPF DataGrid绑定到一个实现ObservableCollection的自定义对象<例&gt ;.这通常适用于使用TwoWay绑定的可编辑属性;但是某些属性(例如下面的V)应该是只读的,尤其是在UI中,并从其他属性中获取它们的值。但是,正如我们所知,ReadOnly属性不能启用TwoWay绑定。如果我将一个setter添加到V,并从Binding中删除ReadOnly属性,它会按预期工作,除非用户当然可以编辑那个不需要的值。我无法找出原因,因为你可以绑定WinForms中的只读数据集列。我觉得我缺少一些简单的东西,允许它工作而不会覆盖一堆类。如果我无法做到这一点,我可能能够使用一种方法来手动刷新DataGrid UI上的绑定对象(如果可行)。我正在使用.NET 4.6。感谢任何帮助。谢谢。

班级代码:

public class Example
{
    private double t = 0;
    private double v = 0;
    public double T
    {
        get { return t; }
        set { t = value; }
    }
    public double V
    {
        get { return t + 1; }
    }
}

列标题代码:

new DataGridTextColumn()
{
    Header = "V",
    IsReadOnly = true,
    Binding = new Binding (nameof(Example.V))
    {
        Mode = BindingMode.TwoWay //Needed to reflect changes back to DataGrid
        NotifySourceUpdated = true //Doesn't seem to make a difference
    }
};

0 个答案:

没有答案