XAF - 更改 PropertyEditor 的值

XAF - Changing value of a PropertyEditor

我正在学习 XAF,我想知道如何访问 PropertyEditor 的值来更改它。我想从一个 PropertyEditor 中获取值并将该值放入另一个 PropertyEditor 的值中。我的代码是这样的:

Property Editor reserva = (PropertyEditor)((DetailView)View).FindItem("Reserva"); //This is a custom object
PropertyEditor dni = (PropertyEditor)((DetailView)View).FindItem("Dni");//This is a simple text editor
PropertyEditor dniReserva = (PropertyEditor)reserva.View.FindItem("Dni");//This is a variable from the custom object
dni.PropertyValue = dniReserva.ControlValue;

这行不通,有什么想法吗?谢谢

您是在谈论将非持久性 属性 的值复制到另一个非持久性 属性 吗?因为在任何其他情况下,我相信有更合适的方法来复制一个值,使用实际属性(here 是有用的答案来帮助你)而不是编辑器。 但是,如果您确实需要这个,我相信您可以创建一个 ViewController 并像这样使用 PropertyEditor 属性

        foreach (PropertyEditor editor in ((DetailView)View).GetItems<PropertyEditor>())
        {
            var control = editor.Control as IntegerEdit;
            if (control != null)
            {
                    if (editor.Id == "Id" || editor.Caption == "Id")
                    {
                        control.Enabled = false;
                    }           
            }
        }

XAF 中的每个 属性 编辑器都从业务对象的特定 属性 中读取值。这种特殊性减少了您将特定 属性 的值复制到另一个值的任务。

在ViewController中,您可以使用View.CurrentObject属性访问当前业务对象。用适当的值更新 属性 后,新值将立即出现在 属性 编辑器中。

如果业务对象没有实现 INotifyPropertyChanged 接口(例如,如果您使用 Entity Framework Code First),您可能还想调用 View.Refresh 方法使新值出现在编辑器中。