2008-11-04 17 views
5

के लिए कॉन्टेक्स्ट मेनू कॉपी करें WPF में ListView नियंत्रण में "क्लिपबोर्ड पर प्रतिलिपि" कार्यक्षमता जोड़ने का सबसे अच्छा तरीका क्या है?ListView नियंत्रण

मैंने ListView ContextMenu या ListViewItem ContextMenu पर एक ApplicationCommands.Copy जोड़ने का प्रयास किया, लेकिन आदेश अक्षम रहता है।

धन्यवाद, पीटर

यहाँ मेरी प्रयास में से एक का एक XAML नमूना है ...

<Window.Resources> 
    <ContextMenu x:Key="SharedInstanceContextMenu" x:Shared="True"> 
     <MenuItem Header="Copy" Command="ApplicationCommands.Copy"/>    
    </ContextMenu> 
</Window.Resources> 

<ListBox Margin="12,233,225,68" Name="listBox1" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Path=UpToSourceCategoryByCategoryId.Category}" ContextMenu="{DynamicResource ResourceKey=SharedInstanceContextMenu}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
</ListBox> 

मैं कैसे इस मामले में CommandTarget सेट करना चाहिए?

धन्यवाद, पीटर

उत्तर

4

ऐसा लगता है कि आप एक CommandBinding की जरूरत है।

यहां बताया गया है कि मैं शायद जो करने की कोशिश कर रहा हूं उसके बारे में मैं कैसे जाऊंगा।

<Window.CommandBindings> 
    <CommandBinding 
     Command="ApplicationCommands.Copy" 
     Executed="CopyCommandHandler" 
     CanExecute="CanCopyExecuteHandler" /> 
</Window.CommandBindings> 

<Window.Resources> 
    <ContextMenu x:Key="SharedInstanceContextMenu"> 
     <MenuItem Header="Copy" Command="ApplicationCommands.Copy"/> 
    </ContextMenu> 

    <Style x:Key="MyItemContainerStyle" TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="ContextMenu" Value="{StaticResource SharedInstanceContextMenu}" /> 
    </Style> 
</Window.Resources> 

<ListBox ItemContainerStyle="{StaticResource MyItemContainerStyle}"> 
    <ListBoxItem>One</ListBoxItem> 
    <ListBoxItem>Two</ListBoxItem> 
    <ListBoxItem>Three</ListBoxItem> 
    <ListBoxItem>Four</ListBoxItem> 
</ListBox> 
+0

धन्यवाद। यह मुझे जाता है जहां मुझे जाने की जरूरत है। – user34403

+0

मदद करने के लिए खुशी हुई! :) –

1

यह भी रूप में मैं इसे अपने blog पर वर्णित एक संलग्न संपत्ति के माध्यम से इस कार्यक्षमता को प्राप्त करने, संभव है। विचार ListView के साथ ApplicationCommands.Copy कमांड को पंजीकृत करना है, और जब आदेश निष्पादित किया जाता है, तो डेटा बाइंडिंग से मान पढ़ें।

आपको ब्लॉग एंट्री पर एक डाउनलोड करने योग्य नमूना भी मिलेगा।

+1

स्रोत कोड का लिंक 406 संदेश देता है। – rozon