2012-06-23 29 views
7

Tôi đang cố gắng khởi chạy ICommand khi người dùng nhấp đúp vào một mục trong hộp danh sách. Ngoài ra, tôi đang cố gắng làm điều này bằng cách sử dụng mẫu MVVM.Làm thế nào để kích hoạt lệnh trên mục hộp đôi bằng cách sử dụng MVVM?

Trong XAML này, nhấn phím "p" hoạt động hoàn hảo. Khi tôi nhấp đúp vào hộp danh sách, lệnh sẽ không bao giờ bắt đầu. Tôi đã đặt điểm ngắt để xác nhận "PlayVideoCommand" không được gọi với nhấp đúp. Tôi có thiếu một cái gì đó hay tôi phải sử dụng Setter (mà tôi không quen thuộc)?

<ListBox Name="SmallVideoPreviews" Grid.Column="1" MaxHeight="965" 
    ItemsSource="{Binding BrowseVideos}" 
    ItemTemplate="{StaticResource BrowseTemplate}"> 
    <ListBox.InputBindings> 
     <KeyBinding Key="p" 
      Command="{Binding PlayVideoCommand}" 
      CommandParameter="{Binding ElementName=SmallVideoPreviews, Path=SelectedItem}"/> 
     <MouseBinding Gesture="LeftDoubleClick" 
      Command="{Binding PlayVideoCommand}" 
      CommandParameter="{Binding ElementName=SmallVideoPreviews, Path=SelectedItem}"/> 
    </ListBox.InputBindings> 
</ListBox> 

Cả double-click và "p" nên thực hiện lệnh tương tự. Khi sử dụng chuột, tôi có thể thấy listboxitem được chọn. Tôi có linh cảm rằng thuộc tính CommandBinding Command không phải là thuộc tính phụ thuộc nhưng tôi không biết cách xác nhận điều này.

Trả lời

10

Điều gì đang xảy ra trong mẫu của bạn là chính hộp danh sách phản ứng với lần nhấp đúp, nhưng chỉ ở một phần của khu vực đó không nằm trong mục hộp danh sách.

Bạn cần trình xử lý sự kiện được gắn với hộp danh sách.

Một số cách để làm điều đó đang ở đây: Double Click a ListBox item to open a browser

Và một số cuộc thảo luận về lý do tại sao một code-behind chút trong MVVM không nhất thiết phải là một điều khủng khiếp: Firing a double click event from a WPF ListView item using MVVM

Thảo luận nhiều hơn: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9fb566a2-0bd6-48a7-8db3-312cd3e93340/

+0

Tôi thấy liên kết thứ hai mà bạn đã đăng, nhưng hy vọng mọi thứ đã thay đổi kể từ khi được đăng vài năm trước. Tôi nghĩ rằng tôi sẽ đăng một vài dòng trong mã phía sau tập tin. Tôi đang có một thời gian khó khăn gắn bó với MVVM trên này. Cảm ơn các chi tiết. – James

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