Bạn có thể sử dụng AttachedCommandBehavior classes from C# Disciples để đạt được điều này.
Xác định lệnh trong ViewModel và sau đó trên đối tượng Lưới sử dụng ACB AttachedProperties để ràng buộc sự kiện MouseLeftButtonUp
với lệnh.
Một số mã để giúp bạn bắt đầu:
<Grid Name="grid" Height="30" ForceCursor="True" Cursor="Hand">
<acb:CommandBehaviorCollection.Behaviors>
<acb:BehaviorBinding Event="MouseLeftButtonUp" Command="{Binding Path=DataContext.EditEventCommand, RelativeSource={RelativeSource AncestorType={x:Type self:Dashboard}}}" CommandParameter="{Binding}" />
</acb:CommandBehaviorCollection.Behaviors>
</Grid>
Chỉnh sửa cho giải pháp phi MVVM.
Đoạn mã trên sẽ vẫn hoạt động khi bạn chưa thiết kế ứng dụng của mình theo hướng dẫn MVVM khi bạn chủ yếu chỉ liên kết với lệnh trong mã sau.
Tuy nhiên, nếu bạn không muốn đi đến những rắc rối của việc xác định các lệnh, bạn có thể chỉ cần xác định một sự kiện để treo đến, như vậy:
<Grid MouseLeftButtonUp="Grid_MouseLeftButtonUp">
trong file XAML.
và trong code-behind:
private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
}
những gì chính xác gây ra vấn đề này? Tôi đang cố gắng hiểu tại sao điều này xảy ra. Không phải là một nhấp chuột vào một mục kết quả trong một sự kiện chuột xem trước đường hầm xuống cây để treeviewitem? hoặc là treeviewitem không phải là trọng tâm của sự kiện chuột? Tôi nghĩ rằng các sự kiện chuột được nâng lên dựa trên thử nghiệm hit sẽ nhận được phần tử bên trong nhất trên cây thị giác (mà tôi giả định sẽ là treeviewitem) và sau đó làm cho mục tiêu của sự kiện –