(! Here क्षमा करें नोट इस एक फिर से पोस्ट के रूप में मेरा पहला सवाल गलत शीर्षक के अंतर्गत पोस्ट किया गया है)।WPF/MVVM - ViewModel में TreeViewItems पर डबल-क्लिक कैसे करें?</p> <p>मैं एक मानक WPF treeview है और मॉडल कक्षाओं देखने पर आइटम के लिए बाध्य किया है: -
आइटम अब डबल-क्लिक किए जाने पर व्यवहार को संभालना चाहते हैं (दस्तावेज दृश्य-स्टूडियो-शैली खोलना)।
मैं घटना-हैंडलर को ट्रीव्यूव (xaml दिखाया गया) के नियंत्रण में आग लग सकता हूं, लेकिन मैं दृश्य मॉडल कक्षाओं पर विशिष्ट व्यवहार से कैसे जुड़ूं - उदा। ProjectViewModel?
बेहतर, ICommand-implementer के लिए बाध्य कर के रूप में इस कहीं और प्रयोग किया जाता है ...
<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>
मैं प्रदर्शित करने के लिए संबंध है, आलसी लोड आदि हालांकि, के साथ व्यक्तिगत treeitems निपटने viewmodel वस्तुओं है जब मैं 'सक्रिय'/डबल क्लिक करें treeview में एक आइटम, मैं चाहता हूँ करना चाहते हैं यह क्रिया उसी दृश्यमान वस्तुओं से संभाली जा सकती है जो प्रदर्शन को संभालती है - लेकिन मैं यह कैसे कर सकता हूं? –
क्या आपने संलग्न व्यवहार को देखने की कोशिश की है? –
ListView का उपयोग कर समान प्रश्न, लेकिन उत्तर नियंत्रण-अज्ञेयवादी हैं http://stackoverflow.com/questions/1035023/firing-a-double-click-event-from-a-wpf-listview-item-using-mvvm/1510592# 1510592 – surfen