Proseguendo con gli esperimenti in XAML, ho provato a sviluppare un Panel personalizzato che disponga i suoi figli con una struttura a muro, più un gioco che un reale utilità.
Per farlo ho creato una classe WallPanel che eredita da Panel e che sovrascrive due metodi: MeasureOverride e ArrangeOverride. Tutto il sistema di posizionamento e dimensione degli elementi in WPF si distingue infatti in due fasi. Nella prima ogni elemento chiede ai propri figli (se ne dispone) quale dimensione preferiscono e i figli faranno altrettanto ricorsivamente. Nella seconda fase viene indicato dal padre per ogni elemento qual'è lo spazio che ha disposizione. Il WallPanel nella MeasureOverride chiede ai figli la loro dimensione calcolando lo spazio totale di cui ha bisogno. Nell'ArrangeOvveride riceve in argomento lo spazio che gli è stato assegnato e dispone in modo sfalsato, su più righe, i figli in modo da dare l'effetto desiderato.
Successivamente il pannello lo si può usare mappando un nuovo namespace xml e usando il tag WallPanel come si è soliti fare in XAML:
<Window x:class="Test1"> xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Wall" Height="400" <strong> xmlns:c="clr-namespace:TestApplication"</strong>> <strong> <c:WallPanel Dockpanel.Dock="Top" x:name="wallPanel"></strong> <WallPanel.Background> <ImageBrush TileMode="Tile" Stretch="None" /> <ImageBrush.ImageSource/> <Bitmapimage UriSource="936.jpg" /> </ImageBrush.ImageSource/> </ImageBrush/> </Wallpanel.Background> ... figli <strong></c:WallPanel></strong>...
E questo il risultato con un po' di figli (Rectangle, TextBox, Button)
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Visual Studio 11 beta: le novità di WPF 4.5, l'1 marzo 2012 alle 19:32
- Spettro audio con WPF, il 28 novembre 2007 alle 23:24
- Controllo WPF: AdvancedListBox, il 24 ottobre 2007 alle 19:24
- Multithreading WPF nel Binding, il 21 ottobre 2007 alle 23:40
- Com'è fatto il formato BAML di WPF?, il 12 settembre 2007 alle 21:31
- WPF attached properties + extension methods, il 10 giugno 2007 alle 22:12