我有一个表格,其中包含表格内容的详细信息,以下是详细信息
InputType(value = Text / Radio / CheckBox,....)
IsRequired(真/假)
OrderedAnswers(包含Radio /复选框可用的选项)
...
我想要的是,
在运行时创建一个包含相应控件的页面,页面将每个控件的值提交给服务。
此时我已经创建了数据表单,但是无法动态定义datatemplate以便我可以向其添加stackpanel,并且在stackpanel中我将添加控件(基于值)。你能提供一些动态创建数据模板和项目的代码吗?
感谢
贾马尔。
答案 0 :(得分:1)
我认为你想要将带有控件的stackpanel添加到特定属性(在带有Silverlight DataForm的ria中)
首先捕获事件AutoGeneratingField
,即
this.myDataForm.AutoGeneratingField +=new EventHandler<DataFormAutoGeneratingFieldEventArgs>(AutoGeneratingFieldHandler);
然后在事件处理程序
中void AutoGeneratingFieldHandler(object sender, DataFormAutoGeneratingFieldEventArgs e)
{
if(e.PropertyName=="myPropertyNameWithCustomField")
{
StackPanel pnl = new StackPanel();
pnl.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
ComboBox cbo = new ComboBox();
//setup binding to base
Binding b = new Binding("myPropertyNameWithCustomField") { Mode = BindingMode.TwoWay };
cbo.SetBinding(ComboBox.SelectedValueProperty, b);
//add the combo to the stackpanel
pnl.Children.Add(cbo);
//replace the autogenerated content with the stackpanel
e.Field.Content=pnl;
e.Field.IsRequired=true;
}
}
这应该让您开始使用自定义控件设置DataForm。