Diskuze: Z WindowsForm na WPF
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Hoď jsem obrázek před a po zvětšení. Nevím, jak přesně to zvětšování myslíš.
Zkus LayoutTransform: Všechny ty kontrolky budeš mít v nějakém Gridu/DockPanelu. Na tento top panel aplikuj LayoutTransform se zvětšením.
já právě nevím jak na ten rozestup mezi kontrolkami + jak s písmem.
Já už jsem na netu našel několik ukázek, ale většinou na nějakém tom
panelu řazeno horizontálně/vertikálně, ale to se mě nehodí, já
potřebuji mít kontrolky (ve výsledku jich tam bude mnohem víc) umístěny
určitým způsobem a toto rozložení zachovat (z důvodu logiky aplikace).
Takže by se na to hodil spíš nějaký ten grid, ale u něj nevím jak měnit
rozestup na základě zvětšení.
ps.: tu horizontální mezeru mezi pictureboxem a textboxy jsem v náhledu trochu pokazil. Jak ta se bude chovat není důležité, ale raději když bude pořád stejná
Tady je primitivní XAML s jedním Buttonem - je to řešené přes Binding:
<Window x:Class="Transform.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Transform"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ScaleTransform x:Key="scale" ScaleX="{Binding ElementName=X, Path=Value}" ScaleY="{Binding ElementName=Y, Path=Value}">
</ScaleTransform>
</Window.Resources>
<StackPanel>
<Slider Name="X" Minimum="0.1" Maximum="3">
</Slider>
<Slider Name="Y" Minimum="0.1" Maximum="3">
</Slider>
<Button Width="100" Height="40" LayoutTransform="{StaticResource scale}">Button
</Button>
</StackPanel>
</Window>
Díky moc za jednoduchost.
Mohl bych poprosit o doplnění ještě jednoho buttonu vedle toho
stávajícího? Ať vím jak vyřešit rozestup kontrolek.
Prostě ho tam přidáš (a nastavíš mu nějaký pevný Margin, aby měly mezi sebou nějakou mezeru). Transformuješ pouze Button, mezery zůstanou stejné.
Jasně chápu, ale ještě nevím jak to skládat za a pod sebe. Do StackPanelu se právě dají umístit kontrolky buď horizontálně nebo vertikálně za sebe.
Aha, a není divné snažit se implementovat zvětšování aplikace a přitom neznat elementární WPF věci, jako Grid, DockPanel, a StackPanel? Fóra jsou od toho, aby ti na nich poradili s kombinovanými nebo komplexními problémy. Nechce se mi sem přepisovat něco, co je v každém WPF tutoriálu na Internetu.
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
</Grid.ColumnDefinitions>
<Slider Grid.ColumnSpan="2" Name="X" Minimum="0.1" Maximum="3">
</Slider>
<Slider Grid.ColumnSpan="2" Grid.Row="1" Name="Y" Minimum="0.1" Maximum="3">
</Slider>
<Button Grid.Row="2" Margin="4" Width="100" Height="40" LayoutTransform="{StaticResource scale}">Button
</Button>
<Button Margin="4" Grid.Column="1" Grid.Row="2" Width="100" Height="40" LayoutTransform="{StaticResource scale}">Button
</Button>
</Grid>
A co přesně nechápeš? Když StackPanelu nastavíš
orientation="Horizontal"
Budou se kontrolky řadit vedle sebe, jinak je implicitně nastaveno řazení pod sebe. StackPanelů si můžeš dát kolik chceš, pokud to chceš mít "tabulkově" souměrně, použij Grid. Do jednotlivých buněk můžeš zase dávat stackpanely, nebo jiné kontejnery...
no právě to sázet do sebe hromadu panelů mě přišlo, že s toho bude hrozná maštal
tohle je aplikace první wpf co chci dělat, právě proto, že potřebuji předělat jednu WF kvůli zoomování. Tak se rovnou zajímám i o pokročilejší metody. Každopádně díky moc za pomoc. Prozatím vím, vše co jsem potřeboval.
Zobrazeno 15 zpráv z 15.