2010-09-01 65 views
0

我有其中包含的形式內容的細節的表格,這裏有細節運行時間數據表!

的inputType(值=文本/收音機/複選框,....)

IsRequired(真/假)

OrderedAnswers(含無線電/複選框可用選項)

....

我想是,

在運行時創建一個包含相應控件的頁面,頁面將每個控件的值提交給服務。

在這一點上,我已經創建了數據表單,但不能動態定義datatemplate,因此我可以添加堆棧面板到堆棧面板並在堆疊面板中添加控件(基於該值)。你能否提供一些代碼來動態地創建數據模板和項目?

謝謝

賈馬爾。

回答

1

我想你想與控制(帶有一個Silverlight的DataForm在RIA)添加StackPanel的一個特定的屬性

第一次捕捉事件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。