/ / Mriežka WPF umožňuje vo vnútri ovládať automatické šírky a výšky - wpf, vb.net, wpf-control, zmena veľkosti, automatická veľkosť

WPF Grid umožňujú ovládanie vnútri na šírku / výšku automatického rozlíšenia - wpf, vb.net, wpf-controls, veľkosť, autosize

Ahoj všetko, čo som sa snažil nájsť príklady toho, ako ísť o automatickej veľkosti ovládacích prvkov, ktoré mám v rámci mriežkového ovládacieho prvku, ak je obrazovka používateľov väčšia ako predvolená veľkosť.

V súčasnosti nemôžem zmeniť veľkosť ovládacích prvkov, keď zväčším formulár. Existuje v súčasnosti nejaký kód, ktorý dokáže nájsť všetky ovládacie prvky vo vnútri mriežky a zmeniť ich veľkosť za chodu, keď sa zmení veľkosť formulára?

Môj aktuálny kód je:

<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="768" Width="1024">
<Grid>
<Grid Height="115" Margin="190,0,195,145" Name="Grid1" VerticalAlignment="Bottom" Background="Cyan">
<Button Height="45" HorizontalAlignment="Left" Margin="10,10,0,0" Name="Button4" VerticalAlignment="Top">Button</Button>
<Button Height="45" HorizontalAlignment="Left" Margin="101,10,0,0" Name="Button5" VerticalAlignment="Top">Button</Button>
<Button Height="45" HorizontalAlignment="Left" Margin="192,10,0,0" Name="Button6" VerticalAlignment="Top">Button</Button>
<Button Height="45" HorizontalAlignment="Right" Margin="280,10,257,0" Name="Button7" VerticalAlignment="Top">Button</Button>
<Button Height="45" HorizontalAlignment="Right" Margin="0,10,166,0" Name="Button8" VerticalAlignment="Top">Button</Button>
<Button Height="45" HorizontalAlignment="Right" Margin="0,10,75,0" Name="Button9" VerticalAlignment="Top">Button</Button>
<Button Height="45" HorizontalAlignment="Left" Margin="10,0,0,9" Name="Button10" VerticalAlignment="Bottom">Button</Button>
<Button Height="45" HorizontalAlignment="Left" Margin="101,0,0,9" Name="Button11" VerticalAlignment="Bottom">Button</Button>
<Button Height="45" HorizontalAlignment="Left" Margin="192,0,0,9" Name="Button12" VerticalAlignment="Bottom">Button</Button>
<Button Height="45" HorizontalAlignment="Right" Margin="280,0,257,9" Name="Button13" VerticalAlignment="Bottom">Button</Button>
<Button Height="45" HorizontalAlignment="Right" Margin="0,0,166,9" Name="Button14" VerticalAlignment="Bottom">Button</Button>
<Button Height="45" HorizontalAlignment="Right" Margin="0,0,75,9" Name="Button15" VerticalAlignment="Bottom">Button</Button>
</Grid>
</Grid>
</Window>

Akákoľvek pomoc by bola skvelá! Vďaka!

odpovede:

4 pre odpoveď č. 1

Zdá sa, že mriežku nepoužívate tak, ako bolo zamýšľané.

Ak chcete, aby sa vaše používateľské rozhranie dynamicky zmenilookná, nemali by ste mať (alebo aspoň minimalizovať) počet pevne kódovaných šírok a výšok. Prvý problém, ktorý vidím, je, že vnútorná mriežka má pevne kódovanú výšku 127, takže bez ohľadu na veľkosť okna táto mriežka bude vždy taká výška. Odstránenie tejto výšky je dobrý prvý krok.

Tiež si nie som istý, prečo existujú dve mriežky - nemôžu všetky tlačidlá byť len deťmi vonkajšej mriežky?

Nakoniec definujete všetky riadky alebo stĺpce v mriežke. Myslím, že ste sa pokúšali použiť VerticalAlignment a HorizontalAlignment vlastnosti jednotlivých tlačidiel na ovládanie, kde sa nachádzajú v okne. Je oveľa lepšie definovať riadky a stĺpce podľa toho, kde majú byť tlačidlá. MSDN obsahuje príklad použitia mriežky s viacerými riadkami a stĺpcami.