2013-03-25 35 views
4

我想創建一個小按鈕,通過綁定顯示自定義類的實際計數屬性。這裏是我的自定義類的代碼片段:綁定到收集計數

public sealed class Counter : IEnumerable<MyClass> 
{ 
    private List<MyClass> m_Collection; 

    public Int32 Count 
    { 
     get { return m_Collection.Count; } 
    } 

    ... 

這裏是我的窗口代碼片段:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     m_Counter = new Counter(); 
    } 

這裏是我的主窗口的XAML代碼片段:

<Window ... DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
... 
    <Button Content="{Binding Path=m_Counter.Count}" Height="40" Width="40"/> 

MH ...什麼我做錯了嗎?

回答

4

您應該計數器實現INotifyPropertyChanged,提高PropertyChanged計數作爲屬性名,當你修改m_Collection

喜歡的東西

public sealed class Counter : IEnumerable<MyClass> , INotifyPropertyChanged 
{ 
    private List<MyClass> m_Collection; 

    public Int32 Count 
    { 
     get { return m_Collection.Count; } 
    } 

    public void Add(MyClass item) 
    { 
     m_Collection.Add(item); 
     if (PropertyChanged != null) 
      PropertyChanged(null, new PropertyChangedEventArgs("Count")); 
    } 

public event PropertyChangedEventHandler PropertyChanged; 

您可能需要啓動它的所有名單突變事件。

比較簡單的事情就是像做

public sealed class Counter2 : IEnumerable<MyClass> 
    { 
     private ObservableCollection<MyClass> m_Collection = new ObservableCollection<MyClass>(); 

     public ObservableCollection<MyClass> Collection 
     { 
      get 
      { 
       return m_Collection; 
      } 
     } 

    } 

和XAML綁定到Collection.Count