2012-01-19 24 views
1

好吧,有點奇怪 - 這可能很簡單,因爲我對Silverlight來說很新!沒有附加調試器時,Silverlight數據綁定會中斷

我有一個具有以下屬性的對象: - 使用從工具包中的數據形創建

private int targetID = NULL_TARGET_VALUE; 
    [Display(Name="Target", Order=1)] 
    [Required] 
    public int TargetID 
    { 
     get 
     { 
      return targetID; 
     } 
     set 
     { 
      if (this.targetID != value) 
      { 
       this.ValidateProperty("TargetID", value); 

       this.targetID = value; 

       this.RaisePropertyChanged("TargetID"); 
      } 
     } 
    } 

這個對象。我用的是AutoGeneratingField事件將項目更改爲組合框下拉與下面的代碼:

if (e.PropertyName == "TargetID") 
     { 
      ComboBox target = new ComboBox() { DisplayMemberPath = "Title", SelectedValuePath = "ItemID" }; 
      target.ItemsSource = TaskManager.Manager.GanttItemSource; 
      var selectedItem = TaskManager.Manager.GanttItemSource.FirstOrDefault(p => p.ItemID == ParentTargetID); 
      target.SelectedItem = selectedItem; 
      e.Field.ReplaceTextBox(target, ComboBox.SelectedValueProperty, binding => binding.Converter = new TargetNullValueConverter()); 
      break; 
     } 

這確實導致下拉,因爲我期望的那樣。在我的保存按鈕事件我有這個代碼:

if (registerForm.ValidateItem()) 
     { 
      this.task.Save(); 
     } 

如果調試器連接到silverlight項目這很好。如果不是那麼ValidateItem返回false,因爲它認爲我已經添加了一個無效的目標(「輸入不是正確的格式」是我得到的確切的驗證錯誤)。

任何想法真的很感激! (順便說一句只是爲了確認這種情況發生在發佈和調試構建模式,只需連接或卸下調試器會導致出現這種情況)

回答

0

該死的,這些問題一度回落至這條線在autogeneratingfield事件: -

e.Field.ReplaceTextBox(target, ComboBox.SelectedValueProperty, binding => binding.Converter = new TargetNullValueConverter()); 

這使得它的工作

      e.Field.ReplaceTextBox(target, ComboBox.SelectedValueProperty); 

這是有道理的,因爲我負責的整數不是對象。仍然不知道它爲什麼與附加的調試器一起工作。