WPF: Cum să stil sau dezactiva ContextMenu implicit a unei casete text

În mod apropriat atunci când utilizatorii fac clic dreapta în aplicația noastră wpf și folosesc tema Windows Classic, implicit ContextMenu din TextBox (care conține Copy, Cut și Paste) are un fundal negru.

Știu că funcționează bine:



  


Dar acest lucru nu merge:





 


  
 

Știe cineva cum să modeleze sau să dezactiveze ContextMenu implicit pentru toate casetele de text din WPF?

0
fr hi bn
nu aveți nevoie să luați în considerare dezactivarea tastelor de comandă rapidă, de ex. CTRL-V?
adăugat autor Carlos Liu, sursa

5 răspunsuri

Încercați să eliminați atributul x: Key din resursa Style, lăsând TargetType. Știu că ar trebui să aveți acel x: Cheie pentru o resursă, dar dacă o aveți împreună cu tipul dvs. de țintă, predomină cheia.

Iată un exemplu de stil pe care îl folosesc într-un proiect pentru a derula toate tooltipurile într-una din aplicațiile mele (aceasta este în App.Resources - notiță, nu Key)

 
0
adăugat

Nu contează, dacă nu furnizați o cheie, va folosi codul TargetType ca cheia exact așa cum exemplul meu folosește :)

Luat de la MSDN pe stil:

Setting the TargetType property to the TextBlock type without setting an x:Key implicitly sets the x:Key to {x:Type TextBlock}. This also means that if you > > give the above Style an x:Key value of anything other than {x:Type TextBlock}, the Style would not be applied to all TextBlock elements automatically. Instead, you need to apply the style to the TextBlock elements explicitly.

http://msdn.microsoft.com/en- ne/biblioteca/system.windows.style.targettype.aspx

0
adăugat

Datorită unui raport de eroare târziu, am descoperit că nu putem folosi aplicația Aplicații de tăiere și copiere directă într-o aplicație parțială de încredere. Prin urmare, utilizarea acestor comenzi în orice Comandă a controalelor dvs. nu va face absolut nimic atunci când este executată.

Deci, în esență, răspunsul lui Brads a fost aproape acolo, cu siguranță că a privit corect drumul, adică nu avea fundal negru, dar nu a rezolvat problema.

Am decis să "eliminăm" meniul pe baza răspunsului lui Brads, după cum urmează:


Și utilizați acest meniu contextual gol astfel:


0
adăugat
sau ați putea folosi , care funcționează de asemenea.
adăugat autor joedotnot, sursa
În plus, setarea IsEnabled din ContextMenu la false evită problema focalizării "freezing" atunci când utilizatorul încearcă să facă clic dreapta.
adăugat autor James M, sursa

Pentru stilul ContextMenu pentru toate casetele de text, aș face ceva de genul:

First, in the resources section, add a ContextMenu which you plan to use as your standard ContextMenu in a textbox.
e.g.


  
  
  

În al doilea rând, creați un stil pentru casetele dvs. de text, care utilizează resursele din meniul contextual:


În cele din urmă, utilizați caseta de text ca de obicei:


Dacă, în schimb, doriți să aplicați acest meniu contextual numai câtorva casete text, nu creați stilul de mai sus și adăugați următoarele în marcajele TextBox:


Sper că acest lucru vă ajută!

0
adăugat
Îmi pare rău că am dat peste un bug. N-am realizat-o niciodată, dar nu pot folosi DirectCommands Cut, Copy și Paste direct în încredere parțială. Acest meniu nu va funcționa sub încredere parțială. Dacă faceți clic pe elementul din meniu, nu are absolut nimic .. Îmi pare rău că a durat aproape 18 luni de descoperit;)
adăugat autor Arcturus, sursa
Răspunsul dvs. m-a condus la noua mea soluție: dezactivarea meniului cu un meniu gol .. Vă mulțumim încă o dată pentru răspunsul dvs.!
adăugat autor Arcturus, sursa

Bizar. ContextMenu = "{x: Null}" nu face truc.

Cu toate acestea,


    
    

0
adăugat