मैं एक उदाहरण दे सकता है। मैं क्या करता हूं IsSelected
TreeViewItem
(TreeView
स्वयं नहीं) दृश्य मॉडल में, क्योंकि आप इससे जुड़ सकते हैं।
मेरे विचार मॉडल में मेरे पास एक संपत्ति ElementInViewModel
है जो एक डेटा संरचना है जो एक पेड़ बनाती है। मैं इसे प्रदर्शित करने के लिए अपने Xaml में HierarchicalDataTemplate
का उपयोग करता हूं। डेटा ऑब्जेक्ट स्वयं YourDomainType
प्रकार का है और इसके बच्चे तत्व (उसी प्रकार के) ChildElements
संपत्ति में हैं।
दृश्य मॉडल में, मैंने IsExpanded
और IsSelected
मेरी डेटा क्लास YourDomainType
की संपत्ति सेट की है। नीचे परिभाषित शैली की वजह से, वे इस सेटिंग को TreeViewItem
पर पास कर देंगे।
क्या यह आपके लिए काम करता है?
<UserControl>
<UserControl.Resources>
<CollectionViewSource Source="{Binding Path=ElementInViewModel}" x:Key="Cvs">
</CollectionViewSource>
<HierarchicalDataTemplate DataType="{x:Type DomainModel:YourDomainType}"
ItemsSource="{Binding Path=ChildElements}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</Setter>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</Setter>
</Style>
</UserControl.Resources>
<DockPanel>
<TreeView ItemsSource="{Binding Source={StaticResource Cvs}}"/>
</DockPanel>
</UserControl>
क्या आपने कभी इसे हल किया था? मेरे पास वास्तव में यह मुद्दा है। – BrettRobi
मुझे लगता है कि यह प्रश्न का डुप्लिकेट है http://stackoverflow.com/questions/1000040/selecteditem-in-a-wpf-treeview –