2013-02-21 32 views
0

我有一個ListView包含一些我需要執行某些操作的記錄。我想將這些記錄計算在執行按鈕上,因此按鈕的.Text屬性會顯示「Execute([items_count])」。單向綁定ListView.Items.Count到一個標籤(Windows窗體)

當然,項目是由用戶從列表中添加/刪除,所以我想要刷新計數器。我正在考慮adding an event在添加/刪除項目時觸發,但我不想創建新的listView類 - 我希望它儘可能簡單。

我試着用this code,但是我失敗了。我所做的是:

// in the form's code: 
public string ItemsCount 
{ 
    get { return String.Format("Execute ({0})", myListView.Items.Count); } 
} 

// in the form's constructor: 
myButton.DataBindings.Add("Text", this, "ItemsCount"); 

它只是一直顯示「執行{0}」。

有沒有一個簡單的解決方案,所以我不需要改變現有的對象(如將myListView的類更改爲繼承ListView的自定義對象)?

+0

我想你需要提供某種更改通知一旦ListView中的項目集合被更改。檢查此鏈接http://msdn.microsoft.com/en-us/library/xz45s2bh.aspx – Woodman 2013-02-21 09:53:21

回答

1

我想你需要提供某種更改通知一旦ListView中的項目集合發生更改。查詢this link獲取有關實施更改通知的幫助。

編輯

我已經刷了信息有關的WinForms ListView控件,它看起來像有沒有簡單的方法,當項目集合得到改變來檢測。檢查related discussion

所以我怕這裏唯一的選擇是實際繼承ListView的子類。

+0

我曾希望避免這種情況,因爲在上述網站上有人說,上面的代碼,沒有實現INotifyPropertyChanged將設置一個這是我的目標。我不知道,也許我以相反的方式綁定? – WRonX 2013-02-21 12:16:00

+1

爲什麼你不能只在你的窗體的構造函數中訂閱myListView.Items.CollectionChanged事件(從內存中寫入,事件的實際名稱可能不同),並且在處理程序中爲propertyName =「ItemsCount」激發INotifyPropertyChanged事件?您不需要爲此子類別繼承ListView – Woodman 2013-02-21 12:21:35

+0

這聽起來像一個想法。我希望我能設法做到這一點。你能提供一小段代碼樣本嗎?這將有所幫助。 – WRonX 2013-02-21 13:18:44