我在寫一個ChecklistBox控件,它是一個列表框,用於呈現列表中的CheckBoxes。然後我在DataForm的EditTemplate中使用這個控件。隨着這種控制,我有兩個文本框綁定到Dataform的DataContext的屬性。Silverlight 3數據表單提交按鈕未激活
作爲參考,ChecklistBox有三個實現的屬性...
- 的ItemsSource - >在可能的項目清單,爲您的對象集合。
- ObjectCollection - >應該受到影響的對象的集合...在這種情況下考慮您的訂單詳細信息。
- CheckboxContentTemplate - >這是下一步應該在列表中的複選框所示(通常,這是對象的只是文本,但它可以是任何東西。)
我正在運行到當我更改ObjectCollection時,Dataform的Commit按鈕將不會激活。但是,如果我在程序執行過程中更改了edittemplate中任一文本框的文本,我的Commit按鈕將激活。
任何想法?
@Shawn:
我有兩個對象,用戶&角色......
public class Users : INotifyPropertyChanged, IEditableObject
{
public string firstname {get{...}set{...}}
public string lastname {get{...}set{...}}
public RoleCollection Roles {get{...}set{...}}
}
public class Role : INotifyPropertyChanged, IEditableObject
{
public Guid Oid {get{...}set{...}}
public string Code {get{...}set{...}}
public string Name {get{...}set{...}}
public string Description{get{...}set{...}}
}
public class RoleCollection:BulkObservableCollection<Role>
{
}
public class BulkObservableCollection<T>:ObservableCollection<T>
{
public void AddRange(IList toAdd)
{
...
}
}
假設爲arguement的緣故,上面的代碼具有所有適當的結構來處理事件在INotifyPropertyChanged和IEditableObject中。當我去建立checklistbox時,我正在查看ObjectCollection(「user」.Roles.Where(item => Item.Oid == role.Oid).Count> 0;)來說明是否要初始檢查該複選框或不。
我知道的事實是,當我取消選中並勾選這些框時,角色的「DataContext」正在被添加或從對象中移除,正如我追蹤到的那樣。我想以某種方式警告數據表單,當我從「角色」中刪除一個對象時,它正在修改對象。
我試圖從ObservableCollection中捕獲CollectionChanged事件,然後發射一個「PropertyChanged(」Roles「)」事件,但這似乎並沒有解決它。
我在上面進一步解釋。這是否足夠讓你繼續? Thx。 – 2009-10-02 16:02:49
我有類似的問題,但我使用集合,所以這可能是我的問題...可惜,因爲這就是我想要的。 – 2010-03-17 22:42:37