3. wpf buyruqlaridan foydalanish wpf da buyruq qatori parametrlari
Bola elementi bo'lmagan oddiy ob'ektga misol
Download 371.69 Kb.
|
WPFda boshqaruv Davronbek
- Bu sahifa navigatsiya:
- Child elementli obektga misol: StackPanelda matn bloki pastki element sifatida mavjud
Bola elementi bo'lmagan oddiy ob'ektga misolBa'zi atributlarga ega ob'ekt elementiga misolMuqobil sintaksisga misol xususiyatlarni aniqlaydi (xususiyat elementi sintaksisi)Child elementli ob'ektga misol: StackPanel'da matn bloki pastki element sifatida mavjudNima uchun WPF da XAMLXAML nafaqat WPF ning eng keng tarqalgan xususiyati, balki u eng noto'g'ri tushunilgan xususiyatlardan biridir. Agar sizda WPF bo'lsa, XAML haqida eshitgan bo'lishingiz kerak; lekin XAML haqida kamroq ma'lum bo'lgan quyidagi ikkita faktga e'tibor bering WPF uchun XAML kerak emas XAML uchun WPF kerak emas Ular aslida ajralib turadigan texnologiya qismlaridir. Bu qanday bo'lishi mumkinligini tushunish uchun XAML da ba'zi xususiyatlar bilan tugma yaratilgan oddiy misolni ko'rib chiqaylik. xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" Title = "MainWindow" Height = "350" Width = "604"> Margin = "150" VerticalAlignment = "Top" Width = "75" /> Agar siz WPF da XAML dan foydalanmaslikni tanlasangiz, protsessual til bilan bir xil GUI natijasiga ham erishishingiz mumkin. Keling, xuddi shu misolni ko'rib chiqaylik, lekin bu safar biz C# da tugma yaratamiz. using System.Windows; using System.Windows.Controls; namespace WPFXAMLOverview { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // Create the StackPanel StackPanel stackPanel = new StackPanel(); this.Content = stackPanel; // Create the Button Button button = new Button(); button.Content = "Click Me"; button.HorizontalAlignment = HorizontalAlignment.Left; button.Margin = new Thickness(150); button.VerticalAlignment = VerticalAlignment.Top; button.Width = 75; stackPanel.Children.Add(button); } } } XAML yoki C# kodini kompilyatsiya qilganingizda va bajarganingizda, quyida ko'rsatilgandek bir xil natijani ko'rasiz. Yuqoridagi misoldan ko'rinib turibdiki, XAML da ob'ektlarni yaratish, ishga tushirish va xususiyatlarini o'rnatish uchun nima qilish mumkin, xuddi shu vazifalar kod yordamida ham bajarilishi mumkin. XAML UI elementlarini loyihalashning yana bir oddiy va oson usuli. XAML bilan bu UI elementlarini loyihalash uchun nima qilishingiz mumkinligi yagona yo'l degani emas. Siz XAML da ob'ektlarni e'lon qilishingiz yoki kod yordamida ularni belgilashingiz mumkin. XAML ixtiyoriy, ammo shunga qaramay, u WPF dizaynining markazida joylashgan. XAML ning maqsadi vizual dizaynerlarga foydalanuvchi interfeysi elementlarini bevosita yaratish imkonini berishdir. WPF foydalanuvchi interfeysining barcha vizual jihatlarini belgilashdan boshlab nazorat qilish imkonini yaratishga qaratilgan. Dasturchilar ob'ektni osongina boshqarishi va ilovaning harakatini o'zgartirishi uchun elementlar va komponentlar daraxt tuzilishida tartiblangan ko'plab texnologiyalar mavjud. Windows Presentation Foundation (WPF) ob'ektlar ko'rinishidagi keng qamrovli daraxt tuzilishiga ega. WPF da to'liq ob'ekt daraxtini kontseptsiyalashning ikki yo'li mavjud - Mantiqiy daraxt tuzilishi Vizual daraxt tuzilishi Ushbu daraxt tuzilmalari yordamida siz UI elementlari orasidagi munosabatlarni osongina yaratishingiz va aniqlashingiz mumkin. Ko'pincha, WPF ishlab chiquvchilari va dizaynerlari dastur yaratish uchun protsessual tildan foydalanadilar yoki ob'ekt daraxti tuzilishini hisobga olgan holda XAML da ilovaning UI qismini loyihalashtiradilar. Mantiqiy daraxt tuzilishi WPF ilovalarida XAML dagi UI elementlarining tuzilishi mantiqiy daraxt tuzilishini ifodalaydi. XAMLda UI ning asosiy elementlari ishlab chiquvchi tomonidan e'lon qilinadi. WPF-dagi mantiqiy daraxt quyidagilarni belgilaydi - Bog'liqlik xususiyatlari Statik va dinamik manbalar Uning nomidagi elementlarni bog'lash va hokazo. Keling, tugma va ro'yxat oynasi yaratilgan quyidagi misolni ko'rib chiqaylik. xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" Title = "MainWindow" Height = "350" Width = "604"> Agar siz XAML kodiga qarasangiz, daraxt strukturasini ko'rasiz, ya'ni ildiz tugun Oyna va ildiz tugunining ichida faqat bitta bola, ya'ni StackPanel mavjud. Lekin StackPanel ikkita asosiy elementni o'z ichiga oladi, tugma va ro'yxat oynasi. Roʻyxat oynasida yana uchta kichik roʻyxat elementi mavjud. Vizual daraxt tuzilishi WPF da vizual daraxt tushunchasi Visual Base Class tomonidan taqdim etilgan vizual ob'ektlarning tuzilishini tavsiflaydi. Bu chiqish ekraniga ko'rsatilgan barcha UI elementlarini bildiradi. Agar dasturchi ma'lum bir boshqaruv uchun shablon yaratmoqchi bo'lsa, u aslida ushbu boshqaruvning vizual daraxtini ko'rsatadi. Vizual daraxt, shuningdek, ishlash va optimallashtirish sabablari uchun past darajadagi boshqaruvlarni chizishni xohlaydiganlar uchun juda foydali. WPF ilovalarida vizual daraxt - uchun ishlatiladi Vizual ob'ektlarni ko'rsatish. Shakllarni renderlash. Yo'naltirilgan hodisalar asosan mantiqiy daraxt bo'ylab emas, balki vizual daraxt bo'ylab harakatlanadi. Yuqoridagi oddiy ilovaning tugma va roʻyxat oynasini oʻz ichiga olgan vizual daraxtini koʻrish uchun XAML kodini kompilyatsiya qilamiz va bajaramiz va siz quyidagi oynani koʻrasiz. Ilova ishlayotganida, quyida ko'rsatilganidek, ushbu ilovaning to'liq ierarxiyasini ko'rsatadigan Live Visual Tree oynasida ishlaydigan ilovaning vizual daraxtini ko'rishingiz mumkin. Vizual daraxt odatda mantiqiy daraxtning yuqori to'plamidir. Bu erda barcha mantiqiy elementlar vizual daraxtda ham mavjudligini ko'rishingiz mumkin. Demak, bu ikki daraxt aslida UIni tashkil etuvchi bir xil ob'ektlar to'plamining ikki xil ko'rinishidir. Mantiqiy daraxt foydalanuvchi interfeysining asosiy tuzilishiga e'tibor qaratish va uning qanday taqdim etilganligi tafsilotlarini e'tiborsiz qoldirish imkonini beruvchi ko'plab tafsilotlarni qoldirib ketadi. Mantiqiy daraxt - bu foydalanuvchi interfeysining asosiy tuzilishini yaratish uchun foydalanadigan narsa. Agar siz taqdimotga e'tibor qaratsangiz, vizual daraxt qiziq bo'ladi. Misol uchun, agar siz istalgan UI elementining ko'rinishini moslashtirmoqchi bo'lsangiz, vizual daraxtdan foydalanishingiz kerak bo'ladi. Windows Presentation Foundation (WPF) ishlab chiquvchilarga vizual boyitilgan UI asosidagi ilovalarni osongina yaratish va yaratish imkonini beradi. Klassik UI elementlari yoki boshqa UI ramkalaridagi boshqaruv elementlari WPF ilovalarida ham yaxshilangan. Barcha standart WPF boshqaruv elementlarini System.Windows.Controls tarkibiga kiruvchi asboblar panelida topish mumkin. Bu boshqaruv elementlari XAML belgilash tilida ham yaratilishi mumkin. WPF boshqaruv elementlarining to'liq meros ierarxiyasi quyidagicha - Buyruqlar qatori argumenti foydalanuvchi WPF ilovasi bajarilganda parametrlar yoki qiymatlar to'plamini o'tkazishi mumkin bo'lgan mexanizmdir. Bu argumentlar ilovani tashqaridan boshqarish uchun juda muhim, masalan, buyruq satridan Word hujjatini ochmoqchi bo‘lsangiz, bu buyruqdan “ C:\> start winword word1.docx” buyrug‘idan foydalanishingiz mumkin va u word1 ni ochadi. .docx hujjati. Buyruqlar qatori argumentlari Ishga tushirish funksiyasida ko'rib chiqiladi. Quyida buyruq qatori argumentlarini WPF ilovasiga qanday o'tkazishni ko'rsatadigan oddiy misol keltirilgan. WPFCommandLine nomi bilan yangi WPF ilovasini yarataylik . Asboblar qutisidan dizayn oynasiga bitta matn qutisini torting. Ushbu misolda biz txt fayl yo'lini buyruq qatori parametri sifatida ilovamizga o'tkazamiz. Dastur txt faylini o'qiydi va keyin matn maydoniga barcha matnni yozadi. Quyidagi XAML kodi matn qutisini yaratadi va uni ba'zi xususiyatlar bilan ishga tushiradi. 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:WPFCommandLine" mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "525"> VerticalAlignment = "Top" Width = "300"/> Endi quyida ko'rsatilgandek App.xaml faylidagi Startup hodisasiga obuna bo'ling. xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local = "clr-namespace:WPFCommandLine" StartupUri = "MainWindow.xaml" Startup = "app_Startup"> Quyida buyruq qatori argumentlarini oladigan App.xaml.cs da app_Startup hodisasini amalga oshirish berilgan. using System.Windows; namespace WPFCommandLine { /// /// Interaction logic for App.xaml /// public partial class App : Application { public static string[] Args; void app_Startup(object sender, StartupEventArgs e) { // If no command line arguments were provided, don't process them if (e.Args.Length == 0) return; if (e.Args.Length > 0) { Args = e.Args; } } } } Endi MainWindow sinfida dastur txt faylini ochadi va matn qutisiga barcha matnni yozadi. Agar biron bir xato topilsa, dastur matn qutisida xato xabarini ko'rsatadi. using System; using System.IO; using System.Windows; namespace WPFCommandLine { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); String[] args = App.Args; try { // Open the text file using a stream reader. using (StreamReader sr = new StreamReader(args[0])) { // Read the stream to a string, and write // the string to the text box String line = sr.ReadToEnd(); textBox.AppendText(line.ToString()); textBox.AppendText("\n"); } } catch (Exception e) { textBox.AppendText("The file could not be read:"); textBox.AppendText("\n"); textBox.AppendText(e.Message); } } } } Yuqoridagi kod kompilyatsiya qilinganda va bajarilganda, u matn qutisi bilan bo'sh oyna hosil qiladi, chunki bu dastur buyruq qatori argumentiga muhtoj. Shunday qilib, Visual Studio buyruq qatori parametrlari bilan ilovangizni bajarishning oson usulini taqdim etadi. Yechim tadqiqotchisida WPF loyihangizni o'ng tugmasini bosing va xususiyatlarni tanlang, u quyidagi oynani ko'rsatadi. Nosozliklarni tuzatish opsiyasini tanlang va Buyruqlar qatori argumentida fayl yo'lini yozing. Test.txt bilan txt fayli yarating va shu faylga bir qancha matn yozing va uni istalgan joyda saqlang. Bunday holda, txt fayli " D:\ " qattiq diskida saqlanadi . Loyihangizdagi o'zgarishlarni saqlang va ilovangizni hoziroq kompilyatsiya qiling va bajaring. TextBox-da dastur Text.txt faylidan o'qiydigan matnni ko'rasiz. Endi kompyuteringizdagi fayl nomini Test.txt dan Test1.txt ga o'zgartirib ko'raylik va dasturingizni qayta ishga tushiramiz, keyin matn maydonida o'sha xato xabarni ko'rasiz. Yuqoridagi kodni bajarishingizni va ilovangizni muvaffaqiyatli bajarish uchun barcha bosqichlarni bajarishingizni tavsiya qilamiz. Istisno - bu dasturni bajarish paytida yuzaga keladigan har qanday xatolik yoki kutilmagan xatti-harakatlar. Ko'pgina sabablarga ko'ra istisnolar ko'tarilishi mumkin, ulardan ba'zilari quyidagilardir - Kodingizda yoki siz qo'ng'iroq qilayotgan kodda xato (masalan, umumiy kutubxona), Operatsion tizim resurslari mavjud emas, Umumiy til ish vaqti duch keladigan kutilmagan holatlar (masalan, tasdiqlab bo'lmaydigan kod) Istisnolar dastur oqimini bir qismdan ikkinchisiga o'tkazish qobiliyatiga ega. .NET Framework-da istisnolardan foydalanish quyidagi to'rtta kalit so'zga ega - urinib ko'ring - Ushbu blokda dastur ba'zi istisnolarni keltirib chiqaradigan muayyan shartni aniqlaydi. catch - catch kalit so'zi istisnoning tutilishini bildiradi. Muammoni hal qilmoqchi bo'lgan dasturda istisno ishlov beruvchisi bilan istisnoni qo'lga olish uchun urinib ko'rish blokidan keyin bir yoki bir nechta catch bloklari keladi. finally - finally bloki istisno qilingan yoki tashlanmasligidan qat'i nazar, berilgan bayonotlar to'plamini bajarish uchun ishlatiladi. Misol uchun, agar siz faylni ochsangiz, istisno paydo bo'ladimi yoki yo'qmi, u yopilishi kerak. throw - Muammo paydo bo'lganda dastur istisno qiladi. Bu throw kalit so'zi yordamida amalga oshiriladi. Ushbu to'rtta kalit so'zdan foydalanish sintaksisi quyidagicha bo'ladi - try { ///This will still trigger the exception } catch (ExceptionClassName e) { // error handling code } catch (ExceptionClassName e) { // error handling code } catch (ExceptionClassName e) { // error handling code } finally { // statements to be executed } Bir nechta catch bayonotlari dastur oqimining holatiga qarab try bloki bir nechta istisnolarni keltirib chiqarishi mumkin bo'lgan hollarda qo'llaniladi. .NET ramkasidagi deyarli barcha istisno sinflari to'g'ridan-to'g'ri yoki bilvosita Exception sinfidan olingan. Exception sinfidan olingan eng muhim istisno sinflari -ApplicationException klassi - Bu dasturlar tomonidan yaratilgan istisnolarni qo'llab-quvvatlaydi. Ishlab chiquvchi istisnoni aniqlamoqchi bo'lsa, sinf ushbu sinfdan olinishi kerak.SystemException klassi - Bu barcha oldindan belgilangan ish vaqti tizimi istisnolari uchun asosiy sinfdir. Quyidagi ierarxiya ish vaqti tomonidan taqdim etilgan standart istisnolarni ko'rsatadi. Quyidagi jadvalda ish vaqti tomonidan taqdim etilgan standart istisnolar va olingan sinf yaratishingiz kerak bo'lgan shartlar keltirilgan. Kontseptsiyani yaxshiroq tushunish uchun oddiy misol keltiraylik. WPFExceptionHandling nomi bilan yangi WPF loyihasini yaratish orqali boshlang . Asboblar qutisidan dizayn oynasiga bitta matn qutisini torting. Quyidagi XAML kodi matn qutisini yaratadi va uni ba'zi xususiyatlar bilan ishga tushiradi. Bu erda faylni o'qish C# da istisnolar bilan ishlash. using System; using System.IO; using System.Windows; namespace WPFExceptionHandling { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); ReadFile(0); } void ReadFile(int index) { string path = @"D:\Test.txt"; StreamReader file = new StreamReader(path); char[] buffer = new char[80]; try { file.ReadBlock(buffer, index, buffer.Length); string str = new string(buffer); str.Trim(); textBox.Text = str; } catch (Exception e) { MessageBox.Show("Error reading from "+ path + "\nMessage = "+ e.Message); } finally { if (file != null) { file.Close(); } } } } } Yuqoridagi kodni kompilyatsiya qilganingizda va bajarganingizda, u matn qutisi ichida matn ko'rsatiladigan quyidagi oynani ishlab chiqaradi. Agar istisno paydo bo'lsa yoki uni qo'lda tashlasangiz (quyidagi kodda bo'lgani kabi), u xato bilan xabar oynasini ko'rsatadi. using System; using System.IO; using System.Windows; namespace WPFExceptionHandling { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); ReadFile(0); } void ReadFile(int index) { string path = @"D:\Test.txt"; StreamReader file = new StreamReader(path); char[] buffer = new char[80]; try { file.ReadBlock(buffer, index, buffer.Length); string str = new string(buffer); throw new Exception(); str.Trim(); textBox.Text = str; } catch (Exception e) { MessageBox.Show("Error reading from "+ path + "\nMessage = "+ e.Message); } finally { if (file != null) { file.Close(); } } } } } Yuqoridagi kodni bajarishda istisno paydo bo'lganda, u quyidagi xabarni ko'rsatadi. Yuqoridagi kodni bajarishingizni va uning xususiyatlari bilan tajriba o'tkazishingizni tavsiya qilamiz. Oldingi bobda biz XAML nima va undan nima uchun foydalanasiz, lekin XAMLda boshqaruvni qanday yaratish mumkinligi haqida gapirgan edik? Keyingi misolda ko'rib turganingizdek, XAML da boshqaruv elementini yaratish uning nomini burchakli qavslar bilan o'ralgan holda yozish kabi oson. Masalan, tugma quyidagicha ko'rinadi: Download 371.69 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling