2011-12-14 50 views
0

我在服務器端應用程序上有2個模型(Trademarks & RetailStores) 每個RetailStore都有用於交叉引用的TradeMarkId字段。 在我的DomainService元數據模型我定義的零售商店(TradeMarkId場)如下:Silverlight 4 - RIA服務DataField上的DataForm頭(AutoGeneratingField)

Class RetailStore: 
[Display(Order = 5, Name = "RetailStoreTradeMarkTitle", Description = "RetailStoreTradeMarkDescription", ResourceType = typeof(RegistrationDataResources))] 
public int TradeMarkId { get; set; } 

在客戶端我的AutoGeneratingField趕上場,並通過組合框列出所有商標替換如下:

 if (e.PropertyName == "TradeMarkId") 
     { 

      ComboBox TradeMarkIdComboBox = new ComboBox { DisplayMemberPath = "TradeMarkName" }; 
      Binding itemsSource = new Binding("TradeMarks") { Source = this.retailStoreDomainDataSource.DomainContext }; 
      Binding selectedItem = new Binding("TradeMark") { Mode = BindingMode.TwoWay }; 
      TradeMarkIdComboBox.SetBinding(ComboBox.ItemsSourceProperty, itemsSource); 
      TradeMarkIdComboBox.SetBinding(ComboBox.SelectedItemProperty, selectedItem); 

      DataField TradeMarkIdField = new DataField 
      { 
       Content = TradeMarkIdComboBox, 
       Label = e.Field.Label 

      }; 
      e.Field = TradeMarkIdField; 

     } 

一切完美的結合詞,但我失去了「RetailStoreTradeMarkTitle」,我在模型中定義描述=「RetailStoreTradeMarkDescription」 DisplayAttributes!並且我失去了該字段的驗證。

所以我的問題我做錯了什麼?有沒有辦法找回模型驗證&字段標題?

Thnaks提前, WAME

回答

0

我很新的這一點,但我認爲這個問題是e.Field位 - 你或許應該使用e.Field.ReplaceTextBox。

我剛纔實現非常相似的東西,該代碼爲我工作: -

 if (e.PropertyName == "TradeMarkId") 
     { 
      ComboBox target = new ComboBox() { DisplayMemberPath = "TradeMarkName", SelectedValuePath = "TradeMarkId" }; 
      target.ItemsSource = TaskManager.Manager.GanttItemSource; 
      e.Field.ReplaceTextBox(target, ComboBox.SelectedValueProperty, binding => binding.Converter = new TargetNullValueConverter());    
     } 

希望工程爲您服務! (請記住,您必須選擇ID屬性 - 我不確定您使用哪個字段作爲商標ID - 我猜測它是「TradeMarkId」。