(Lưu ý - đây là một bài đăng lại khi câu hỏi đầu tiên của tôi được đăng dưới tiêu đề sai: Here Xin lỗi!)WPF/MVVM - làm thế nào để xử lý bấm đúp vào TreeViewItems trong ViewModel?
Tôi có một khung nhìn WPF chuẩn và có các mục bị ràng buộc để xem các lớp mô hình.
Bây giờ tôi muốn xử lý hành vi khi các mục được nhấp đúp (mở tài liệu kiểu studio-studio).
Tôi có thể xử lý sự kiện để kích hoạt nhà kiểm soát treeview (xaml được hiển thị), nhưng làm cách nào để liên kết với hành vi cụ thể trên các lớp mô hình chế độ xem - ví dụ: ProjectViewModel?
Ưu tiên ràng buộc để ICommand-người thực hiện, như thế này được sử dụng ở những nơi khác ...
<TreeView ItemsSource="{Binding Projects}" MouseDoubleClick="TreeView_MouseDoubleClick">
<TreeView.ItemContainerStyle>
<!--
This Style binds a TreeViewItem to a TreeViewItemViewModel.
-->
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type Implementations:ProjectViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\Region.png" />
<TextBlock Text="{Binding DisplayName}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type Implementations:PumpViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\State.png" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type Implementations:PumpDesignViewModel}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Images\City.png" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</TreeView.Resources>
</TreeView>
Tôi có các đối tượng viewmodel xử lý các cây riêng lẻ liên quan đến hiển thị, tải chậm ... Tuy nhiên, khi tôi muốn 'kích hoạt'/nhấp đúp vào một mục trong treeview, tôi muốn hành động này sẽ được xử lý bởi cùng một đối tượng viewmodel xử lý hiển thị - nhưng làm cách nào để làm điều đó? –
Bạn đã thử xem các Hành vi được đính kèm chưa? –
Câu hỏi tương tự sử dụng ListView, nhưng câu trả lời là http://stackoverflow.com/questions/1035023/firing-a-double-click-event-from-a-wpf-listview-item-using-mvvm/1510592# 1510592 – surfen