added samples
[windows-sources.git] / sdk / samples / WPFSamples / MarginPaddingAlignmentSample / cpp / margin_padding_alignment_sample.cpp
blob42997b5dbae2c166eea781979c76b74238063663
1 //Margin_Padding_Alignment_Sample.cpp file
2 using namespace System;
3 using namespace System::Windows;
4 using namespace System::Windows::Controls;
5 using namespace System::Windows::Media;
6 using namespace System::Windows::Shapes;
7 using namespace System::Threading;
9 namespace Margin_Padding_Alignment_Sample {
11 public ref class app : Application {
13 private:
14 Border^ myBorder;
15 Grid^ myGrid;
16 Window^ mainWindow;
18 protected:
19 virtual void OnStartup (StartupEventArgs^ e) override
21 Application::OnStartup(e);
22 CreateAndShowMainWindow();
25 private:
26 void CreateAndShowMainWindow ()
28 mainWindow = gcnew Window();
30 myBorder = gcnew Border();
31 myBorder->Background = Brushes::LightBlue;
32 myBorder->BorderBrush = Brushes::Black;
33 myBorder->BorderThickness = Thickness(2);
34 myBorder->CornerRadius = CornerRadius(45);
35 myBorder->Padding = Thickness(25);
37 // Define the Grid.
38 myGrid = gcnew Grid();
39 myGrid->Background = Brushes::White;
40 myGrid->ShowGridLines = true;
42 // Define the Columns.
43 ColumnDefinition^ myColDef1 = gcnew ColumnDefinition();
44 myColDef1->Width = GridLength(1, GridUnitType::Auto);
45 ColumnDefinition^ myColDef2 = gcnew ColumnDefinition();
46 myColDef2->Width = GridLength(1, GridUnitType::Star);
47 ColumnDefinition^ myColDef3 = gcnew ColumnDefinition();
48 myColDef3->Width = GridLength(1, GridUnitType::Auto);
50 // Add the ColumnDefinitions to the Grid.
51 myGrid->ColumnDefinitions->Add(myColDef1);
52 myGrid->ColumnDefinitions->Add(myColDef2);
53 myGrid->ColumnDefinitions->Add(myColDef3);
55 // Add the first child StackPanel.
56 StackPanel^ myStackPanel = gcnew StackPanel();
57 myStackPanel->HorizontalAlignment = HorizontalAlignment::Left;
58 myStackPanel->VerticalAlignment = VerticalAlignment::Top;
59 Grid::SetColumn(myStackPanel, 0);
60 Grid::SetRow(myStackPanel, 0);
61 TextBlock^ myTextBlock1 = gcnew TextBlock();
62 myTextBlock1->FontSize = 18;
63 myTextBlock1->HorizontalAlignment = HorizontalAlignment::Center;
64 myTextBlock1->Margin = Thickness(0, 0, 0, 15);
65 myTextBlock1->Text = "StackPanel 1";
66 Button^ myButton1 = gcnew Button();
67 myButton1->Margin = Thickness(0, 10, 0, 10);
68 myButton1->Content = "Button 1";
69 Button^ myButton2 = gcnew Button();
70 myButton2->Margin = Thickness(0, 10, 0, 10);
71 myButton2->Content = "Button 2";
72 Button^ myButton3 = gcnew Button();
73 myButton3->Margin = Thickness(0, 10, 0, 10);
74 TextBlock^ myTextBlock2 = gcnew TextBlock();
75 myTextBlock2->Text = "ColumnDefinition.Width = \"Auto\"";
76 TextBlock^ myTextBlock3 = gcnew TextBlock();
77 myTextBlock3->Text = "StackPanel.HorizontalAlignment = \"Left\"";
78 TextBlock^ myTextBlock4 = gcnew TextBlock();
79 myTextBlock4->Text = "StackPanel.VerticalAlignment = \"Top\"";
80 TextBlock^ myTextBlock5 = gcnew TextBlock();
81 myTextBlock5->Text = "StackPanel.Orientation = \"Vertical\"";
82 TextBlock^ myTextBlock6 = gcnew TextBlock();
83 myTextBlock6->Text = "Button.Margin = \"1,10,0,10\"";
84 myStackPanel->Children->Add(myTextBlock1);
85 myStackPanel->Children->Add(myButton1);
86 myStackPanel->Children->Add(myButton2);
87 myStackPanel->Children->Add(myButton3);
88 myStackPanel->Children->Add(myTextBlock2);
89 myStackPanel->Children->Add(myTextBlock3);
90 myStackPanel->Children->Add(myTextBlock4);
91 myStackPanel->Children->Add(myTextBlock5);
92 myStackPanel->Children->Add(myTextBlock6);
94 // Add the second child StackPanel.
95 StackPanel^ myStackPanel2 = gcnew StackPanel();
96 myStackPanel2->HorizontalAlignment = HorizontalAlignment::Stretch;
97 myStackPanel2->VerticalAlignment = VerticalAlignment::Top;
98 myStackPanel2->Orientation = Orientation::Vertical;
99 Grid::SetColumn(myStackPanel2, 1);
100 Grid::SetRow(myStackPanel2, 0);
101 TextBlock^ myTextBlock7 = gcnew TextBlock();
102 myTextBlock7->FontSize = 18;
103 myTextBlock7->HorizontalAlignment = HorizontalAlignment::Center;
104 myTextBlock7->Margin = Thickness(0, 0, 0, 15);
105 myTextBlock7->Text = "StackPanel 2";
106 Button^ myButton4 = gcnew Button();
107 myButton4->Margin = Thickness(10, 0, 10, 0);
108 myButton4->Content = "Button 4";
109 Button^ myButton5 = gcnew Button();
110 myButton5->Margin = Thickness(10, 0, 10, 0);
111 myButton5->Content = "Button 5";
112 Button^ myButton6 = gcnew Button();
113 myButton6->Margin = Thickness(10, 0, 10, 0);
114 myButton6->Content = "Button 6";
115 TextBlock^ myTextBlock8 = gcnew TextBlock();
116 myTextBlock8->HorizontalAlignment = HorizontalAlignment::Center;
117 myTextBlock8->Text = "ColumnDefinition.Width = \"*\"";
118 TextBlock^ myTextBlock9 = gcnew TextBlock();
119 myTextBlock9->HorizontalAlignment = HorizontalAlignment::Center;
120 myTextBlock9->Text = "StackPanel.HorizontalAlignment = \"Stretch\"";
121 TextBlock^ myTextBlock10 = gcnew TextBlock();
122 myTextBlock10->HorizontalAlignment = HorizontalAlignment::Center;
123 myTextBlock10->Text = "StackPanel.VerticalAlignment = \"Top\"";
124 TextBlock^ myTextBlock11 = gcnew TextBlock();
125 myTextBlock11->HorizontalAlignment = HorizontalAlignment::Center;
126 myTextBlock11->Text = "StackPanel.Orientation = \"Horizontal\"";
127 TextBlock^ myTextBlock12 = gcnew TextBlock();
128 myTextBlock12->HorizontalAlignment = HorizontalAlignment::Center;
129 myTextBlock12->Text = "Button.Margin = \"10,0,10,0\"";
130 myStackPanel2->Children->Add(myTextBlock7);
131 myStackPanel2->Children->Add(myButton4);
132 myStackPanel2->Children->Add(myButton5);
133 myStackPanel2->Children->Add(myButton6);
134 myStackPanel2->Children->Add(myTextBlock8);
135 myStackPanel2->Children->Add(myTextBlock9);
136 myStackPanel2->Children->Add(myTextBlock10);
137 myStackPanel2->Children->Add(myTextBlock11);
138 myStackPanel2->Children->Add(myTextBlock12);
140 // Add the final child StackPanel.
141 StackPanel^ myStackPanel3 = gcnew StackPanel();
142 myStackPanel3->HorizontalAlignment = HorizontalAlignment::Left;
143 myStackPanel3->VerticalAlignment = VerticalAlignment::Top;
144 Grid::SetColumn(myStackPanel3, 2);
145 Grid::SetRow(myStackPanel3, 0);
146 TextBlock^ myTextBlock13 = gcnew TextBlock();
147 myTextBlock13->FontSize = 18;
148 myTextBlock13->HorizontalAlignment = HorizontalAlignment::Center;
149 myTextBlock13->Margin = Thickness(0, 0, 0, 15);
150 myTextBlock13->Text = "StackPanel 3";
151 Button^ myButton7 = gcnew Button();
152 myButton7->Margin = Thickness(10);
153 myButton7->Content = "Button 7";
154 Button^ myButton8 = gcnew Button();
155 myButton8->Margin = Thickness(10);
156 myButton8->Content = "Button 8";
157 Button^ myButton9 = gcnew Button();
158 myButton9->Margin = Thickness(10);
159 myButton9->Content = "Button 9";
160 TextBlock^ myTextBlock14 = gcnew TextBlock();
161 myTextBlock14->Text = "ColumnDefinition.Width = \"Auto\"";
162 TextBlock^ myTextBlock15 = gcnew TextBlock();
163 myTextBlock15->Text = "StackPanel.HorizontalAlignment = \"Left\"";
164 TextBlock^ myTextBlock16 = gcnew TextBlock();
165 myTextBlock16->Text = "StackPanel.VerticalAlignment = \"Top\"";
166 TextBlock^ myTextBlock17 = gcnew TextBlock();
167 myTextBlock17->Text = "StackPanel.Orientation = \"Vertical\"";
168 TextBlock^ myTextBlock18 = gcnew TextBlock();
169 myTextBlock18->Text = "Button.Margin = \"10\"";
170 myStackPanel3->Children->Add(myTextBlock13);
171 myStackPanel3->Children->Add(myButton7);
172 myStackPanel3->Children->Add(myButton8);
173 myStackPanel3->Children->Add(myButton9);
174 myStackPanel3->Children->Add(myTextBlock14);
175 myStackPanel3->Children->Add(myTextBlock15);
176 myStackPanel3->Children->Add(myTextBlock16);
177 myStackPanel3->Children->Add(myTextBlock17);
178 myStackPanel3->Children->Add(myTextBlock18);
180 // Add child content to the parent Grid.
181 myGrid->Children->Add(myStackPanel);
182 myGrid->Children->Add(myStackPanel2);
183 myGrid->Children->Add(myStackPanel3);
185 // Add the Grid as the lone child of the Border.
186 myBorder->Child = myGrid;
188 // Add the Border to the Window as Content and show the Window.
189 mainWindow->Content = myBorder;
190 mainWindow->Title = "Margin, Padding, and Alignment Sample";
191 mainWindow->Show();
195 private ref class EntryClass {
197 public:
198 [System::STAThread()]
199 static void Main ()
201 Margin_Padding_Alignment_Sample::app^ app = gcnew Margin_Padding_Alignment_Sample::app();
202 app->Run();
207 //Entry Point:
208 [System::STAThreadAttribute()]
209 void main ()
211 return Margin_Padding_Alignment_Sample::EntryClass::Main();