【发布时间】:2013-07-21 16:45:50
【问题描述】:
由于某种原因,当我更新 DataGrid 中的值时,它们没有保留在内存对象中?事实上,在编辑单元格的过程中会显示新值,但只要我切换到下一行,这些值就会恢复。
这是我的 DataGrid 定义:
<DataGrid ItemsSource="{Binding Items, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Position X" Binding="{Binding Position.X, Mode=TwoWay}"/>
<DataGridTextColumn Header="Position Y" Binding="{Binding Position.Y, Mode=TwoWay}"/>
<DataGridTextColumn Header="Position Z" Binding="{Binding Position.Z, Mode=TwoWay}"/>
<DataGridTextColumn Header="Rotation" Binding="{Binding Angles[2], Mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
对象是:
public class Box{
public Vector3D Position { get; set; }
public double[] Angles { get; set; }
}
EDIT1:
经过进一步检查,我注意到Vector3D(System.Windows.Media.Media3D)是一个结构,而不是一个类。因此,我怀疑 Position.X 的间接寻址不起作用。
话虽如此,当我删除了“旋转”绑定(double[])之外的所有内容时,它仍然不起作用。
EDIT2:Binding 诊断报告表明该绑定停用和分离。
【问题讨论】:
-
显示 Vector3D 类/结构
-
@Blam,这是.NET class
-
@NewDev,你需要提交编辑
-
@Blam,实际上,Vector3D 事实证明,它不是
class,而是struct... 我怀疑它可能是罪魁祸首 - 请参阅更新后的问题