2013-10-18 48 views
6

我有這個問題,我的複選框IsChecked屬性綁定不起作用。我搜索了一下,但是人們說它收集了我正在使用的TwoWay綁定。WPF複選框IsChecked綁定不起作用

這裏是我的代碼:

<CheckBox Name="ckC" VerticalAlignment="Center" 
      IsChecked="{Binding Path=LSMChannelEnable[2], 
           Mode=TwoWay, 
           UpdateSourceTrigger=PropertyChanged}" /> 

這裏是它背後的C#代碼:

 public bool[] LSMChannelEnable 
     { 
      get 
      { 
       return this._liveImage.LSMChannelEnable; 
      } 
      set 
      { 
       this._liveImage.LSMChannelEnable = value; 
       OnPropertyChanged("LSMChannelEnable"); 
       OnPropertyChanged("EnableChannelCount"); 
       OnPropertyChanged("LSMChannel"); 
      } 
     } 

任何指針的高度讚賞,

+0

作爲一個側面說明,默認情況下,WPF複選框已經是雙向綁定。 –

回答

12

這是因爲你被綁定到一個數組。將屬性拉出,您想綁定到一個單獨的屬性。

的Xaml:

IsChecked="{Binding Path=ButtonEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 

代碼:

public bool ButtonEnabled 
{ 
    get { return this._liveImage.LSMChannelEnable[2]; } 
    set { this._liveImage.LSMChannelEnable[2] = value; 
     OnPropertyChanged("ButtonEnabled"); 
    } 
} 
+0

你的意思是「公共bool ButtonEnabled」? – Karthik

+0

是!修正了,謝謝! –

+0

您也可以在「public bool [] LSMChannelEnable」的setter中激發「OnPropertyChanged(」ButtonEnabled「)」。否則,如果你打算給LSMChannelEnable分配一個不同的數組,一個可能改變的布爾值將不會被按鈕狀態反映出來。 – elgonzo

4

嘗試這種情況:

OnPropertyChanged("Item[]"); 

使用索引時由編譯器生成的屬性。 見this blog post

+0

謝謝!但是我覺得樓上的這個更容易理解。 –

相關問題