我已经做了很多搜索,并发现了许多关于此的帖子,但仍然没有解决这个问题的简单方法。我有一个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
}
};