WPF में, जब मैं एक वृक्षदृश्य आइटम पर राइट-क्लिक करता हूं, तो मैं संदर्भ मेनू दिखाने से पहले इसे चयनित/सक्रिय करना चाहता हूं।डब्ल्यूपीएफ में, मैं अपने कर्सर के नीचे राइट-क्लिक पर ट्रीव्यू आइटम कैसे चुनूं?
यह बहुत आसान लगता है, लेकिन एक हाइराचिकलडेटा टेम्पलेट को शामिल करने से चीजों को थोड़ा जटिल बना दिया जाता है। कैसे मैं एक EventSetter ऊपर जोड़ने
<TreeView
x:Name="trv"
ContextMenu="{StaticResource contextMenu}"
ItemTemplate="{StaticResource treeHierarchicalDataTemplate}"
ItemsSource="{Binding Source={StaticResource meetingItems}}" >
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="trv_PreviewMouseRightButtonDown"/>
<Setter Property="IsExpanded" Value="True"></Setter>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
और यहाँ मेरी ईवेंट हैंडलर है ...
private void trv_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
TreeViewItem item = sender as TreeViewItem;
if (item != null)
{
item.Focus();
e.Handled = true;
}
}
नोट:
मैं निम्नलिखित treeview है। यह सबसे काम करता है। लेकिन यह केवल रूट-स्तरीय वृक्षदृश्य नोड का चयन करता है (यानी नोड के मूल अभिभावक जिस पर मैं दायाँ क्लिक करता हूं)। यह मेरे पदानुक्रमित डेटा टेम्पलेट के कारण हो सकता है? इस टेम्पलेट में एक ही प्रकार के बच्चे हो सकते हैं।
यहाँमेरी श्रेणीबद्ध डेटा टेम्पलेट है ...
<HierarchicalDataTemplate x:Key="treeHierarchicalDataTemplate"
ItemsSource="{Binding Path=ChildMeetingItems}">
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Red}" Value="True">
<Setter TargetName="img" Property="Image.Source" Value="pack://siteoforigin:,,,/images/bookRed.png"></Setter>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
<StackPanel
x:Name="treeViewItemPanel"
Background="Transparent"
Orientation="Horizontal">
<Image Width="16" Height="16" x:Name="img" Margin="0,0,4,0" Source="pack://siteoforigin:,,,/images/bookGreen.png"></Image>
<TextBlock Foreground="DarkGray" Text="{Binding DisplayIndex}" Margin="0,0,5,0"></TextBlock>
<TextBlock Text="{Binding Summary}"></TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
कारण है कि जब मैं राइट क्लिक करें बच्चे नोड्स के स्थान पर केवल रूट नोड का चयन किया जाता पर कोई विचार?
धन्यवाद डेनिस। यह समझ आता है। मैं अभी भी अजीब व्यवहार कर रहा हूं ... अगर मैं दोनों पदानुक्रम डेटाटाम्प्लेट और वृक्षदृश्य पर ItemContainerStyle सेट करता हूं, तो यह अभी भी पहले जैसा ही करता है। अगर मैं केवल पांडुक्रमित डेटाटाम्प्लेट पर ItemContainerStyle सेट करता हूं, तो यह वही काम करता है, लेकिन इस बार केवल दूसरे स्तर पर नोड्स के लिए। अजीब। कोई विचार? – willem
आह, दिलचस्प। यह ई। हैंडल = सच के कारण हो रहा था। 100% निश्चित नहीं है कि क्यों ... – willem
क्योंकि आप एक सुरंग घटना (एक पूर्वावलोकन XXX घटना) को संभालने वाले हैं। ये घटनाएं पेड़ के नीचे से नीचे तक जाती हैं, इसलिए यदि आप रूट पर ई। हैंडल = सत्य सेट करते हैं, तो यह वहां रुक जाएगा और पेड़ को आपके आइटम पर सुरंग नहीं करेगा। –