2011-03-08 10 views
14

In base a questo MSDN page, se stavo usando Window, potrei disabilitare la casella di controllo nell'angolo in alto a sinistra impostandola su false. Come questo: this.ControlBox = false;Come rimuovere il menu di sistema in WPF?

Il ControlBox ha Ingrandisci, Riduci a icona, Ripristina e Chiudi opzioni
I want to disable this box in my own application

Ma dal momento che sto usando RibbonWindow al posto di Window, come avrei disattivare la casella di controllo in questa situazione?

This question è molto correlato, ma sto cercando di disattivare il MenuMenu tutto il tempo, non solo per impedire Alt + Spazio. Questo perché (penso) l'action listener per il SystemMenu nell'angolo in alto a sinistra blocca un elemento dell'interfaccia utente cliccabile nel mio XAML.

Si noti che questo non è un problema con Windows Server 2003, ma quando l'applicazione viene aperta in Windows 7, SystemMenu/ControlBox interferisce con l'elemento dell'interfaccia utente nell'angolo in alto a sinistra.

Inoltre, ho riscontrato che interferendo con il menu di sistema di solito i pulsanti nell'angolo in alto a destra dell'applicazione vengono disattivati, ma non voglio che ciò accada.

Grazie per il link Eammonn. Penso che quello che quella persona stava cercando di fare è disabilitare il pulsante [X] nell'angolo in alto a destra, non il menu nell'angolo in alto a sinistra, ma potrei sbagliarmi. Il motivo per cui non penso che funzionerà è che stanno usando <Window x:Class= e sto usando <dc:RibbonWindow x:Class=. Questo fa la differenza?

+1

Da dove proviene RibbonWindow (conosco almeno 2 diverse librerie che forniscono questo, mi chiedo solo quale si sta utilizzando). – CodingGorilla

+0

Microsoft.Windows.Control.Ribbon.RibbonWindow –

+1

La risposta di Eamonn dovrebbe funzionare anche per RibbonWindow, in quanto è solo un'estensione di Window. Office 2010 ha reintrodotto la casella di controllo (con l'icona). Office 2007 lo aveva nascosto, a favore del globo. Ciò interferisce con il globo o la barra degli strumenti di accesso rapido? – CodeNaked

risposta

14

La finestra WPF non è un oggetto System.Windows.Forms, quindi questo.ControlBox = false non funzionerebbe comunque. Non v'è alcuna proprietà esplicito a fare questo in WPF, ma vedere questo articolo

http://winsharp93.wordpress.com/2009/07/21/wpf-hide-the-window-buttons-minimize-restore-and-close-and-the-icon-of-a-window/

Esso descrive come è possibile rimuovere la versione WPF della scatola di controllo.

controlli WPF sono derivati ​​da System.Windows.Controls e non System.Windows.Forms

+1

Grazie! Sai che tipo di oggetto è la finestra WPF? –

+1

È un controllo. –

+0

Per essere precisi, si tratta di un controllo WPF che "avvolge" una finestra nativa (ad esempio una HWND). – CodeNaked

0

si imposta del vostro Window

<Window ... 
    WindowStyle="ToolWindow" 
    ResizeMode="NoResize"> 

Buona fortuna.

Problemi correlati