2013-10-18 12 views
6

Tôi có vấn đề này, rằng hộp kiểm của tôi IsChecked tài sản ràng buộc không hoạt động. Tôi googled, nhưng mọi người nói nó shoudl HaiWay ràng buộc đó là những gì tôi đang sử dụng.WPF hộp kiểm IsChecked ràng buộc không làm việc

Đây là mã của tôi:

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

Đây là mã # C đằng sau nó:

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

Bất kỳ con trỏ được đánh giá cao,

+0

Là một lưu ý phụ, Hộp kiểm WPF đã được ràng buộc hai chiều theo mặc định. –

Trả lời

12

Điều này là do bạn đang liên kết với một mảng . Kéo thuộc tính ra ngoài mà bạn muốn liên kết với một thuộc tính riêng biệt.

XAML:

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

Code:

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

bạn có nghĩa là "bool ButtonEnabled công khai"? – Karthik

+0

Yup! Cố định, cảm ơn! –

+0

Bạn có thể muốn kích hoạt "OnPropertyChanged (" ButtonEnabled ")" cũng trong setter của "public bool [] LSMChannelEnable". Nếu không, nếu bạn định gán một mảng khác cho LSMChannelEnable, một giá trị bool có thể thay đổi sẽ không được phản ánh bởi trạng thái nút. – elgonzo

4

Hãy thử điều này:

OnPropertyChanged("Item[]"); 

Thuộc tính được tạo ra bởi trình biên dịch khi sử dụng một indexer. Xem this blog post.

+0

Cảm ơn! Nhưng tôi cảm thấy ở tầng trên dễ hiểu hơn. –

Các vấn đề liên quan