Posso rendere opachi i controlli della griglia WPF in fase di progettazione?

StackOverflow https://stackoverflow.com/questions/453513

  •  19-08-2019
  •  | 
  •  

Domanda

Quindi ho appena iniziato con WPF e sono davvero infastidito dal fatto che se poso due griglie una sopra l'altra, la griglia superiore non è opaca. Rende la progettazione estremamente fastidiosa. Questo può essere disattivato in qualche modo?

Sto solo creando la tua applicazione Winforms STYLE standard, ma in WPF. Sto solo cercando di iniziare a colmare il divario qui. In Winforms (e VB) avresti sempre delle caselle di gruppo o qualcosa del tuo modulo e quindi, a seconda del contesto dell'utente, una di quelle caselle di gruppo sarebbe in cima. È come ho progettato le forme da tempo immemorabile. Una delle due cose deve essere vera qui:

A) Questo non è il modo consigliato per progettare Windows andando avanti con WPF, ma non capisco cosa dovresti fare

B) C'è qualche proprietà per rendere opache le griglie in modo che io possa costruire la finestra nello stile a cui sono abituato.

Sto bene con le risposte che risolvono A o B. Se non sto facendo le cose nel modo giusto perché sono cambiate, per favore illuminami.

Aggiornamento: Quindi, posso rendere opaca la griglia impostando il colore di sfondo, ma ora mi sembra di essere bloccato su uno sfondo bianco invece di attenermi ai colori di sistema.

È stato utile?

Soluzione

È possibile utilizzare SystemColors per far corrispondere il colore di sfondo del controllo (anziché essere bianco).

Non capisco perché tu voglia mettere una griglia sopra l'altra però. In WPF generalmente usi una singola griglia per impilare più elementi visivi all'interno di una regione. Puoi spiegare perché vuoi nascondere le cose in background con elementi in primo piano?

Sembra un po 'come se stessi implementando un controllo a schede: passa da una pagina all'altra in base al focus. Hai sperimentato il nuovo TabControl ?

Mi sto spostando da WinForms allo sviluppo di WPF ogni volta che è possibile e ho scoperto che in tal modo è stato necessario un nuovo aggiustamento. WPF ha un modo completamente diverso di disporre le cose e ora che mi sento più a mio agio, penso che sia superiore. Immagino che devi solo percorrere un po 'più a lungo la curva di apprendimento.

Spero che sia d'aiuto.

MODIFICA: In risposta al tuo commento, immagino che tu possa avere un controllo a schede senza schede, anche se non l'ho provato da solo (potrebbe essere degno di un'altra domanda su SO). I controlli di tabulazione sono controlli con intestazione, nel senso che hanno un elemento di intestazione e un elemento di contenuto. In questo caso, l'intestazione è il pulsante della scheda, il contenuto è l'elemento della pagina. Puoi specificare un ControlTemplate che descriva in dettaglio come questi elementi devono essere visualizzati l'uno rispetto all'altro.

È interessante notare che molti altri tipi di elementi comuni della GUI sono anche controlli headered:

  • Voci di menu - La voce di menu testo / icona è l'intestazione e il sottomenu opzionale è il contenuto
  • Vista ad albero : ogni nodo è l'intestazione e i figli opzionali sono all'interno del contenuto
  • Casella di gruppo - L'intestazione è, beh, l'intestazione e il contenuto è, beh, il contenuto :)

Si noti che nel caso di voci di menu e viste ad albero, il tipo può nidificare in modo ricorsivo all'interno di se stesso. Questo è piuttosto elegante e può offrire alcune opzioni di presentazione selvaggiamente diverse sullo stesso modello logico con solo modifiche al modello di controllo.

Per ulteriori informazioni leggi HeaderedContentControl e HeaderedItemsControl

Altri suggerimenti

È possibile utilizzare quanto segue:

  <Grid Background="{DynamicResource {x:Static SystemColors.WindowBrush}}">  
  <!-- content -->
  </Grid>

Questo risponderà ai cambiamenti nei colori di sistema al volo (DynamicResource fa questo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top