是否可以在不创建整个编辑模板的情况下将DataField添加到Silverlight DataForm?

det*_*pro 3 silverlight silverlight-toolkit dataform

我将DataForm用于具有大约40个属性的实体.我很满意表单如何显示除3个属性之外的所有属性.这3个属性恰好是项目列表.

我不想编写整个编辑模板,看起来非常适得其反.

<dataFormToolkit:DataForm AutoGenerateFields="True" CurrentItem="{Binding XXX, Mode=TwoWay, Source={StaticResource XXXViewModel}}" >
                    <dataFormToolkit:DataField Label="Client"  >
                        <ListBox ItemsSource="{Binding Client}"></ListBox>
                    </dataFormToolkit:DataField>
                </dataFormToolkit:DataForm>
Run Code Online (Sandbox Code Playgroud)

Mar*_*rth 5

在该WCF RIA服务包括演示创建CustomDataForm他们重写一个Silverlight业务应用程序项目模板OnAutoGeneratingField和修改字段只是你想要的属性.我已经在这里复制了代码来说明这个想法,但我建议你查看真实的东西,看看他们是如何使用ReplaceTextBox扩展方法来处理数据绑定的.下载链接.

public class CustomDataForm : DataForm
{
    protected override void OnAutoGeneratingField(DataFormAutoGeneratingFieldEventArgs e)
    {
        // Get metadata about the property being defined
        PropertyInfo propertyInfo = this.CurrentItem.GetType().GetProperty(e.PropertyName);

        // Do the password field replacement if that is the case
        if (e.Field.Content is TextBox && this.IsPasswordProperty(propertyInfo))
        {
            e.Field.ReplaceTextBox(new PasswordBox(), PasswordBox.PasswordProperty);
        }

        // Keep this newly generated field accessible through the Fields property
        this.fields[e.PropertyName] = e.Field;

        // Call base implementation (which will call other event listeners)
        base.OnAutoGeneratingField(e);
    }
}
Run Code Online (Sandbox Code Playgroud)