Προς το περιεχόμενο

c#, WPF: Γιατί το Context menu δεν είναι ενεργό;


macabre_sunsets

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω τον ακόλουθο κώδικα:

><UserControl.Resources>
       <ResourceDictionary>
           <RoutedUICommand 
               x:Key="PlaceInCenter" />
           <ContextMenu x:Key="Menu">
               <MenuItem 
                   Header="Place in center"
                   Command="{StaticResource PlaceInCenter}" />
           </ContextMenu>
       </ResourceDictionary>
   </UserControl.Resources>

   <UserControl.CommandBindings>
       <CommandBinding 
           Command="{StaticResource PlaceInCenter}"
           Executed="command_PlaceInCenter" />
   </UserControl.CommandBindings>

ο οποίος δημιουργεί ένα context menu που εμφανίζεται με δεξί click πάνω σε ένα user control που έχω φτιάξει.

Επειδή προσθέτω δυναμικά το user control στην φόρμα μου και για κάθε ένα control που προσθέτω κάνω το ακόλουθο:

>Control.ContextMenu = (ContextMenu)this.FindResource("Menu");

Έτσι όταν κάνω δεξι click στο control μου εμφανίζεται το menu αλλά όλες οι επιλογές είναι απενεργοποιημένες.

Γιατί γίνεται αυτό? Πώς ενεργοποιούνται? Καμια ιδέα?

Για την κάθε εντολή έχω το αντίστοιχο ακόλουθο κομμάτι κώδικα:

>private void command_PlaceInCenter(object sender, ExecutedRoutedEventArgs e)
       {
           e.Handled = true;
       }

  • 2 μήνες μετά...
Δημοσ.

Στο XAML, πρόσθεσε ο, τι βλέπεις με έντονους χαρακτήρες:

>
<UserControl.CommandBindings>
   <CommandBinding 
       Command="{StaticResource PlaceInCenter}"
       Executed="command_PlaceInCenter" 
       [b]CanExecute="command_PlaceInCenter_CanExecute"[/b] />
</UserControl.CommandBindings>

 

Στον κώδικα:

>
...
private void command_PlaceInCenter_CanExecute( object sender, CanExecuteRoutedEventArgs e )
{
   // Check your conditions, if any.
   e.CanExecute = true;
}
...

Δημοσ.

Ευχαριστώ για την απάντησή σου και ας είναι σχεδόν 3 μήνες μετά.

 

Νομίζω πως ακόμα και με αυτό που παρέθεσες το πρόβλημα παρέμενε. Αυτό οφειλόταν σε ένα bug από ότι διάβαζα, το οποίο έκανε τα Context Menu disable άμα το τάδε control δεν είχε το focus. Το πρόβλημα το έλυσα με άλλο τρόπο (τον οποίο δεν θυμάμαι τώρα ακριβώς - έβαλα το context menu σε άλλο σημείο στο xaml ή κάτι τέτοιο).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...