აპლიკაციის განლაგების
განსაზღვრისთვის შეგიძლიათ გამოიყენოთ კლასი, რომლიც მემკვიდრეა Panel კლასისა. რამდენიმე
განლაგების კონტეინერებია ხელმისაწვდომი, რომლებსაც მე განვიხილავ. განლაგების კონტეინერს
ესაჭიროება ჩაატაროს ორი დავალება: გაზომოს და დაალაგოს (measure და arrange). გაზომვით კონტეინერი
„ეკითხება“ შვილ კონტროლებს თუ რამდენი ადგილი ესაჭიროებათ მათ. რადგან შვილის მიერ
შეთავაზებული ადგილი შეიძლება არ იყოს კონტეინერში მოთავსებადი (ჩატევადი), ამის შემდეგ
კონტეინერი წყვეტს, თუ როგორ დაალაგოს შვილეული კონტროლები ოპტიმალურად.
შვილეულ / შვილ
კონტროლებში ვგულისხმობ იმათ, რომლებიც მოთავსებულები არიან კონტეინერში. რომ წარმოვიდგინოთ
ყუთი და ამ ყუთში მოთავსებული ღილაკი, იარლიყი და კიდევ სხვა. მოცემული გვაქვს 5 სახის
განლაგების კონტეინერი, რომლების უნიკალურები არიან თავიანთი თვისებებით.
Ø StackPanel
Ø WrapPanel
Ø Canvas
Ø DockPanel
Ø Grid
დავიწყოთ თავიდან.
StackPanel
ფანჯარა შეიძლება
შეიცავდეს ერთ კონტროლს როგორც შვილ კონტროლს. თუ საჭიროა, რომ ფანჯარაში ერთზე მეტი
კონტროლი იყოს, მაშინ ერთ-ერთი გზაა გამოიყენოთ StackPanel, როგორც ფანჯრის შვილეული და შემდეგ
მასში ჩასვათ სხვა კონტროლები. ეს კონტეინერი საკმაოდ მარტივია, რომელიც ერთ ელემენტს
აჩვენებს მეორეს გვერდით. StackPanel
ის ორიენტაცია შეიძლება იყოს ჰორიზონტალური და ვერტიკალური. ინფორმაციისთვის
ToolBarPanel კლასი
არის StackPanel ის
მემკვიდრე.
ზემოთ მოცემულია
StackPanel ის
როგორც ჰორიზონტალური ისე ვერტიკალური ვერსია. ქვემოთ კი XAML კოდი
<Window x:Class="App_for_blogpost_tutorials.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350" Width="525">
<StackPanel>
<StackPanel
Orientation="Vertical" Margin="0,0,0,20">
<Label>Label</Label>
<TextBox>TextBox</TextBox>
<CheckBox>CheckBox</CheckBox>
<CheckBox>CheckBox</CheckBox>
<ListBox>
<ListBoxItem>ListBoxItem
One</ListBoxItem>
<ListBoxItem>ListBoxItem
Two</ListBoxItem>
</ListBox>
</StackPanel>
<StackPanel
Orientation="Horizontal">
<Label>Label</Label>
<TextBox>TextBox</TextBox>
<CheckBox>CheckBox</CheckBox>
<CheckBox>CheckBox</CheckBox>
<ListBox>
<ListBoxItem>ListBoxItem
One</ListBoxItem>
<ListBoxItem>ListBoxItem
Two</ListBoxItem>
</ListBox>
</StackPanel>
</StackPanel>
</Window>
WrapPanel
ეს განლაგება
ელემენტებს ათავსებს მარცხნიდან მარჯვნივ თითოეულის მიმდევრობით. ამ განლაგებასაც შეიძლება
ჰქონდეს როგორც ვერტიკალური, ისე ჰორიზონტალური ორიენტაცია
<Window x:Class="App_for_blogpost_tutorials.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350" Width="525">
<WrapPanel>
<Button
Width="100" Margin="5">Button1</Button>
<Button
Width="100" Margin="5">Button2</Button>
<Button
Width="100" Margin="5">Button3</Button>
<Button
Width="100" Margin="5">Button4</Button>
<Button
Width="100" Margin="5">Button5</Button>
<Button
Width="100" Margin="5">Button6</Button>
<Button
Width="100" Margin="5">Button7</Button>
<Button
Width="100" Margin="5">Button8</Button>
</WrapPanel>
</Window>
აპლიკაციის ზომის
შეცვლის ზემოთ გვექნება მსგავსი რამ
Canvas
არის პანელი,
რომელიც საშუალებას გაძლევთ მკაფიოდ განათავსოთ ელემენტები. Canvas ში განსაზღვრულია
მიბმული თვისებები: Left,
Right, Top, Bottom, რომლებიც შეიძლება გამოყენებულ იქნას პანელში პოზიციის
განსასაზღვრად
<Window x:Class="App_for_blogpost_tutorials.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350" Width="525">
<Canvas
Background="LightBlue">
<Label
Canvas.Top="30" Canvas.Left="20">დაბეჭდე აქ</Label>
<TextBox
Canvas.Top="30" Canvas.Left="120" Width="100"
/>
<Button
Canvas.Top="70" Canvas.Left="130"
Content="დამაჭირე!" Padding="5"
/>
</Canvas>
</Window>
DockPanel
DockPanel ძალიან გავს Windows Forms ში dock ფუნქციას (მათთვის იქნება
ნაცნობი ვისაც შეხება ჰქონია ამ ტექნოლოგიასთან). აქ შესაძლებელია იმ ფართის მითითება,
სადაც შვილეული კონტროლები უნდა დალაგდეს. DockPanelს გააჩნია თვისება Dock, რომელთა დაყენებაც შესაძლებელია შვილეულ ელემენტებში დაკონფიგურდეს: Left,
Right, Top, Bottom. მოცემულია მაგალითი, სხვადასხვა ფერების გამოყენებით, რაც უფრო აადვილებს
გარჩევას
<Window x:Class="App_for_blogpost_tutorials.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350" Width="525">
<DockPanel>
<Border
Height="25" Background="red"
DockPanel.Dock="Top">
<TextBlock>მენიუ</TextBlock>
</Border>
<Border
Height="25" Background="Blue"
DockPanel.Dock="Top">
<TextBlock>სამუშაო ხაზი</TextBlock>
</Border>
<Border
Height="30" Background="Green"
DockPanel.Dock="Bottom">
<TextBlock>სტატუსი</TextBlock>
</Border>
<Border
Height="80" Background="Yellow"
DockPanel.Dock="Left">
<TextBlock>მარცხენა მხარე</TextBlock>
</Border>
<Border
Background="Azure">
<TextBlock>კონტექსტის ადგილი</TextBlock>
</Border>
</DockPanel>
</Window>
Grid
Grid ის გამოყენებით შესაძლებელია კონტროლების დალაგება რიგებისა და სვეტების
მიხედვით. ყველა სვეტისთვის შესაძლებელია ColumnDefinition ის განსაზღვრა. ყველა რიგისთვის შესაძლებელია RowDefinition
ის განსაზღვრა. ყველა სვეტისათვის და რიგისთვის
შესაძლებელია სიმაღლისა და სიგანის განსაზღვრა. ColumnDefinition ს გააჩნია Width თვისება, ხოლო RowDefinition ს გააჩნია Height თვისება. სიგანისა და სიმაღლის განსაზღვრა შესაძლებელია პიქსელებში, ინჩებში,
სანტიმეტრებში ან წერტილებში, ან უბრალოდ Auto, რომ განისაზღვროს ზომები, კონტექსტის მიხედვით. ამ კონტეინერს ასევე შეუძლია
„ვარსკვლავური“ ზომების იმპლემენტაცია. მაგალითისათვის ავიღოთ სამ სვეტიანი Grid კონტეინერი, რომლის პირველი სვეტის Width = “100”,
მესამე სვეტის Width = “120”,
ხოლო შუა სვეტის ზომა შეგვიძლია ასეც მივუთითოთ
- Width
= “*”, ვარსკვლავი იმას ნიშნავს, რომ რაც კი ადგილი დარჩა შეუძლია დაიკავოს ამ
სვეტმა.
<Window x:Class="App_for_blogpost_tutorials.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350" Width="525">
<Grid
ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition
/>
<ColumnDefinition
/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition
/>
<RowDefinition
/>
<RowDefinition
/>
</Grid.RowDefinitions>
<Label
Grid.Column="0" Grid.ColumnSpan="2"
Grid.Row="0"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Content="სათაური"
/>
<Label
Grid.Column="0" Grid.Row="1"
VerticalAlignment="Center"
Content="სახელი:"
Margin="10" />
<TextBox
Grid.Column="1" Grid.Row="1"
Width="100" Height="30"
/>
<Label
Grid.Column="0" Grid.Row="2"
VerticalAlignment="Center"
Content="გვარი:"
Margin="10" />
<TextBox
Grid.Column="1" Grid.Row="2"
Width="100" Height="30"
/>
</Grid
>
</Window>
კოდში Grid ის უკეთ დასანახად გავლებულია
ხაზები, რომლებიც ჩვეულებრივ არ ჩანს ხოლმე.
No comments:
Post a Comment