2009-09-11 8 views
23

Molto spesso quando si torna a Visual Studio da Expression Blend 3, vedo che Blend ha aggiunto una proprietà "d: LayoutOverrides" al mio XAML. Crescendo con i progettisti di ASP.NET, sfido naturalmente tutto ciò che non mi digitarei, quindi rimuovili non appena li vedo.Perché Blend aggiunge [d: LayoutOverrides = "Altezza"] e dovrei preoccuparmi?

So che le proprietà "d:" sono solo di progettazione e non hanno alcun impatto sul runtime, ma qualcuno può offrire qualche idea su cosa fa questa proprietà e perché Blend sarebbe così insistente da averle in tutto il mio markup?

<Border d:LayoutOverrides="Height" /> 

risposta

31

Questo è solo lì in modo che Blend sa come visualizzare il tuo XAML in modalità progettazione. In particolare, se hai un layout fluido che si estende per riempire il suo contenitore, non c'è un modo chiaro per Blend per sapere quanto dovrebbe essere alto il tuo design; LayoutOverrides lo definisce.

Quelle voci di impostazioni LayoutOverride vengono aggiunte quando (o un'altra persona che esegue Blend) ridimensiona manualmente gli elementi nella superficie di progettazione. Se li stai vedendo oltre il codice (come ad esempio in un elemento di confine):

  1. Di solito è possibile eliminarli senza alcun notevole influenzare
  2. Si potrebbe guardare come si sta utilizzando Miscela - in particolare, si dovrebbe dimensionare il cotainer principale di una buona dimensione (UserControl/LayoutRoot), quindi impostare le dimensioni del bambino in base al layout fluido - ad es. imbottitura e margine o * dimensioni

Si noti che gli attributi ignorabili di Blend vengono eliminati in fase di compilazione e non influiscono sulle prestazioni dell'applicazione. Pertanto, sebbene sia possibile rimuoverli per migliorare la leggibilità del codice, non influiscono sul modo in cui viene eseguita l'applicazione.

+1

Excelent risposta. – heltonbiker

+5

@jon Ancora non capisco! Capisco completamente cosa d: DesignWidth = "500" fa, ma LayoutOverrides in realtà non specifica alcuna dimensione quindi cosa fa esattamente? Hai detto che "LayoutOverrides lo definisce", ma cosa definisce? Se ridimensiono un componente in Blend, inserisce semplicemente Height, non d: LayoutOverrides o d: DesignHeight. Sembra essere molto diffuso su TextBlock ma sono ancora perplesso perché non vedo che in realtà influenzi qualcosa in Blend in un modo o nell'altro: - / –

2

d: LayoutOverrides

Se una proprietà è impostata su un valore fisso in fase di esecuzione, ma si vuole ignorare che a designtime, è possibile utilizzare la d: attributo LayoutOverrides. Tutte le proprietà che dovrebbero essere ignorate in fase di progettazione possono essere elencate, separate da un punto e virgola.

(fonte: http://wpftutorial.net/DesigntimeVsRuntime.html)

Problemi correlati