2012-03-12 17 views
6

iv'e có một số mục cần chỉnh sửa sự kiện cho sự kiện PreviewMouseLeftButtonDown chỉ khi đáp ứng một điều kiện nhất định.Tự động đặt trình xử lý sự kiện bằng cách sử dụng DataTrigger

iv'e thiết kế một phong cách cho các điều khiển của tôi với một DataTrigger, tôi kiểm tra ra các ràng buộc của nó và thử nó ra với một setter tài sản thường xuyên cho Thuộc tính BorderThickness chỉ để thấy rằng DataTrigger làm việc . (Nó ..)

làm cách nào tôi có thể áp dụng trình xử lý dữ liệu của mình để đính kèm trình xử lý sự kiện khi điều kiện của trình dữ liệu được đáp ứng bằng cách sử dụng trình thiết lập sự kiện theo cùng cách tôi sẽ đặt thuộc tính thông thường?

cái gì đó dọc theo dòng:

 <Style TargetType="{x:Type ItemsControl}">        
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Turn}" Value="True"> 
       <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemsControl_MouseLeftButtonDown"></EventSetter> 
      </DataTrigger>        
     </Style.Triggers> 
    </Style> 

đánh dấu này ném ngoại lệ sau đây trên dòng eventsetter:

'Set property 'System.Windows.EventSetter.Event' threw an exception.' 

Nội Ngoại lệ:

 {"Value cannot be null.\r\nParameter name: value"} 
+0

chính xác dòng nào ném ngoại lệ đó? Có phải ' '? –

+0

@XiaoChuanYu

Trả lời

11

Thật không may theo MSDN doc dưới Ghi chú:

Lưu ý rằng chỉ Style.Setters hỗ trợ các đối tượng EventSetter. Những yếu tố dẫn (TriggerBase và có nguồn gốc lớp) không hỗ trợ EventSetter

Trong trường hợp này, DataTrigger có nguồn gốc từ TriggerBase nên bạn không thể sử dụng nó để thiết lập xử lý sự kiện tự động. Cách giải quyết mà tôi có thể nghĩ đến ngay bây giờ có thể là chuyển đổi động kiểu dựa trên giá trị Turn.

+0

Tôi thực sự nghĩ đến việc đăng ký thuộc tính phụ thuộc, có thể là giống như: mouseleftbuttondown = "True" và sử dụng nó trong setter tôi không biết liệu tôi có thể sử dụng thuộc tính tùy thuộc của người phụ thuộc trong một setter không. –

+0

Tôi chắc chắn nó phù hợp với hoàn cảnh của bạn nhưng bạn có thể muốn xem http://stackoverflow.com/questions/1138339/can-i-dynamically -switch-between-styles-in-wpf –

+0

đó là một ý tưởng hay, thiết kế bị bệnh một phong cách dựa trên phong cách tôi đã có và làm một cái gì đó như thế nào.

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