قبل از خواندن این مقاله، خواندن قسمت قبلی مجموعه را به شدت توصیه می کنم.
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (کنترل دکمه)
Stackpanel
Stackpanel فقط یک یا چند کنترل را در یک پنل نگه می دارد. به کنترلهای پنل داخلی، کنترلهای فرزند میگویند. کنترل های کودک را می توان به پشته های افقی (چپ به راست) یا عمودی (از بالا به پایین) مرتب کرد. میتوانیم تمام آیتمهای کنترلی مانند جعبه متن، دکمه و جعبه ترکیبی را به Stackpanel اضافه کنیم.
چرا Stackpanel کنترل های بیشتری را در اختیار دارد؟ یکی از دلایل، اشیاء پنجره هستند، همانطور که در نمونه کنترل دکمه کدگذاری مشاهده می کنید، شی پنجره در هر زمان تنها یک کنترل را نگه می دارد. با این حال، اگر یک کنترل دیگر اضافه کنیم، اولین کنترل بازنویسی می شود.
نمونه ای از دو کنترل در شی پنجره:
- void App::OnLaunched(LaunchActivatedEventArgsconst &)
- {
- Button BtnClick;
- IInspectable captionText = PropertyValue::CreateString(L "Click Me");
- BtnClick.Content(captionText);
- //To change background and Foreground of the color
- BtnClick.Background(SolidColorBrush(Colors::Red()));
- BtnClick.Foreground(SolidColorBrush((Colors::Yellow())));
- BtnClick.Click( & App::BtnClick);
- Button BtnClickOK;
- IInspectable captionOK = PropertyValue::CreateString(L "OK");
- BtnClickOK.Content(captionOK);
- Window window = Window::Current();
- window.Content(BtnClick);
- window.Content(BtnClickOK);
- window.Activate();
- }
کنترل دکمه خروجی را بازنویسی کرده است
برای جلوگیری از این امر، stackpanel بسیار مفید خواهد بود. تمام کنترل ها را به stackpanel اضافه کنید، در آخر کنترل stackpanel را به شی پنجره اضافه کنید تا همه کنترل ها قابل مشاهده باشند. اجازه دهید ویژگی های stackpanel را با یک مثال ببینیم.
خواص
فرزندان
تمام آیتمهای کنترل باید به ویژگی فرزندان اضافه شوند. Children یک محفظه UIElementCollection است، به طور پیش فرض تمام کنترل ها به ترتیب شاخص صفر اضافه می شوند. ویژگی های افزودن برای اضافه کردن کنترل ها به ظرف استفاده می شود.
مثال
- stPanel.Children().Append(CreateTextBlock(L"Panel 1"));
- stPanel.Children().Append(CreateTextBlock(L"Panel 2"));
از خواص درج برای قرار دادن کنترل در موقعیت شاخص استفاده می شود. (شکستن مفهوم شاخص صفر)
مثال
- stPanel.Children().InsertAt(4,CreateTextBlock(L"Panel 5"));
- stPanel.Children().InsertAt(5,CreateTextBlock(L"Panel 6"));