Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

133
بم خذا ثصػ آهدم، هقذ داسم اص ایي لضظ ثل داد هس کطوب WPF وبى یب Windows Presentation Foundation سامسؽ سا یبداکت ذ تب چصم اعت ک صػع اهن. هجل اص ؽشع ک ؽش: هی اخکت ض یکش چی هجل اص: جغ ثب رکش کبهل هوشا اص هطبلت ایي ثخؼ ثشداسی کپیشگ غ هی ثبؽذ هب ث... 1) د.ذ ثاسی کوتش خبی صن ط کغجت ث ب عشػت آى ثبؽذ، هجیؼت هتي هیست فصػ ث اهکل ای دلی ثیض ثب ساهبی هشث هطلت، ػکظ یکسیت روغ آبثغ هختلق، ر ه ثش تشرو ػد کن ثاس خى هزج چ هجچب چ ایزبدهبی هشث شم اكضاس ؾب فجش ثان. پظ خیب کن ه ب سا ن ثبؽذ، آى به ضج داسای کذ ثشبثغ كبسعی ه ضج رذیذى ایي هج ثبؽیذ. چذاؽت صذیي سصػ سا دس چل ؽذى ایي آهظبس تکویت ا یذ د خشدصػ داؽ پظ اص ایي آهي صهی دس ایة كبسعیجغ خاى یک ه ثت ؾبء.. اذاس در ثشای آى ثبؽین ت2) ( ذاسد در کبهل ست ثغیبس فش هطلت ث میش ؽذ، اهکبى ت گلتل ا گضی دس اثتذایلی کوبى دلی ثدػ دس ایيذ خا ثت سا دسیبكت هطلتذا خذ ؽذ، کا خمیش داد دس صذی ت .. پظ هطبلت)هت د کوج دچب ثپشداصیذ.. چؾتشی هطبلؼبت ثی ث صهیمب هل ب هطبلت ثشای ؽوبت اؽکبل داسیذ، یش کزبی هطبل س دس گضیی ک تبپیکذ، ثغت 5 یذوبی اعت، هشارؼ ثیبى ؽذ. 3) ث ع هیؾ هجتذی ؽشبصج اص هج اس ست علغل ف، هطبلت ثزبم ؽذ ای کبی ضی سیبهیل ثش دل ثىذ ؽذ. چا تذسیظ خبصج پیؾتشكتسیذ هج تذش عطضی غی ثبی بهش ثش هی اعت هکبى ػو ایي رب یکیي تبپیک سا دس صهبذ ایاذ، هی تی اؽشاف داسبصج اثتذای ثش هجی کعتب ثبؽذ. پظ دد داؽتر ، هوکي اعتذجبل ک تش سعیذ، دبصج پیؾتشكت هج ث ک. 4) د سذ، هطبلت خصػ سا داسوکبسی دس آه هقذی کعتب د دس اهنبیویل هي ک یب ثب ای فیب ثب پیـبم خق ا ی ب کؾب اص هشاس دادى لیان. پظ خؼیي آى سا دس تبپیک هشاس دذ، تب دس صهبى ه دعت هي ثشعب، ثدر هي هبت ا دس اػبت کک م دس تبپیکست لضب سا دس ف آى یذد داسی کي تبپیک خ هتؼذد دس ای بی هختلق کت یي شد اص ذاس ثیبى ؽ ست علغل فن هطبلت ثا هی خیل اعت ک ایي دلذ. ایي ثی، هشاس د ثخؼ هشاس داسدشی ؽگی دس تبپیک رل هشد. 5) یذد داسی کد، خک هطشس هی ؽي تبپی دس ایوی کی ثب هلب دس ساثطلتگ گ اة، ثضج ر ال، عش گ ی کب سا دس تبپیک آى دس اعتس ایزبد ؽذظویي ه ث ادسطhttp://barnamenevis.org/forum/showth...769#post499769 یذ هشاس داسد، هشاس د. 6) غوت، هطش ه پظ اص پبیبىذ ؽذ کا عؼی خت یک كبیل بلت دس هبلpdf عتبى هشاس ثگیشدیض دس اختیبس د 7) ذ اص ػجبستصػ ایي اهسد اعتلبدبثغ ه ه: القFoundations of WPF: An Introduction to Windows Presentation Foundation )

Transcript of Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

Page 1: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ث بم خذا

سا Windows Presentation Foundation یب وبى WPF وبطس ک هل داد ثدم، هقذ داسم اص ایي لضظ آهصػ

:ؽشع کن. هجل اص ؽشع اهصػ لاصم اعت ک چذ تب کت سا یبداسؽم

: هجل اص ش چیض یک کت اخلاهی

...ثلا هبغ هی ثبؽذ شگ کپی ثشداسی اص هطبلت ایي ثخؼ وشا ثب رکش کبهل هجغ

ث دلیل ایک اهصػ ث فست هتي هی ثبؽذ، هجیؼتب عشػت آى غجت ث کلاط بی صنسی کوتش خاذ ثد. (1

چى هزجس خان ثد ک ػلا ثش تشرو هبثغ هختلق، رت روغ آسی یک هطلت، ػکظ بی هشثه سا یض ثب

ضج داسای کذ ثشبه ن ثبؽذ، آى ب سا ن هیب کن. پظ خاؾب فجش ث شم اكضاس بی هشثه ایزبد چبچ هج

خشد دیذ اتظبس تکویل ؽذى ایي آهصػ سا دس چذیي سص ذاؽت ثبؽیذ. چى ایي هجضج رذیذ هبثغ كبسعی

ت ثبؽینثشای آى رد ذاس.. اؾبء الله ثتاى یک هجغ خة كبسعی دس ایي صهی پظ اص ایي آهصػ داؽ

ث وبى دلیلی ک دس اثتذای گضی ال گلت ؽذ، اهکبى تمیش ش هطلت ث فست ثغیبس کبهل رد ذاسد ) (2

کوجد هت( .. پظ هطبلت دس صذی تمیش داد خاذ ؽذ، ک خاذ هطلت سا دسیبكت ثتاذ خدػ دس ایي

س ش کزبی هطبلت اؽکبل داسیذ، یب هطبلت ثشای ؽوب ب هلم صهی ث هطبلؼبت ثیؾتشی ثپشداصیذ.. چبچ د

.ثیبى ؽذ اعت، هشارؼ وبییذ 5غتذ، ث تبپیکی ک دس گضی

ث دلیل ثشبه سیضی بیی ک ازبم ؽذ، هطبلت ث فست علغل اس اص هجبصج هجتذی ؽشع هیؾ ث (3

ایي رب یک هکبى ػوهی اعت ش ثشبه یغی ثب ش عطضی تذسیذ هجبصج پیؾتشكت تذسیظ خاذ ؽذ. چى

هوکي اعت، رد داؽت ثبؽذ. پظ دعتبی ک ثش هجبصج اثتذایی اؽشاف داسذ، هی تاذ ایي تبپیک سا دس صهبی

.ک ث هجبصج پیؾتشكت تش سعیذ، دجبل کذ

ا یب ثب پیـبم خقفی یب ثب ایویل هي ک دس اهنبی دعتبی ک هقذ وکبسی دس آهصػ سا داسذ، هطبلت خد س (4

هي هرد، ث دعت هي ثشعبذ، تب دس صهبى هؼیي آى سا دس تبپیک هشاس دن. پظ خاؾب اص هشاس دادى لیک ب

یي کت بی هختلق هتؼذد دس ایي تبپیک خد داسی کیذ آى ب سا دس فست لضم دس تبپیک کبت ک دس اػلابت ا

ثخؼ هشاس داس، هشاس دیذ. ایي ث ایي دلیل اعت ک هی خان هطبلت ث فست علغل اس ثیبى ؽذ اص شد

.هشد دس تبپیک رلگیشی ؽد

ش گ، عال راة، ثضج گلتگ دس ساثط ثب هلبیوی ک دس ایي تبپیک هطشس هی ؽد، خد داسی کیذ (5

ث ویي هظس ایزبد ؽذ اعت دس آى ب سا دس تبپیکی ک

.هشاس داسد، هشاس دیذ http://barnamenevis.org/forum/showth...769#post499769 ادسط

یض دس اختیبس دعتبى هشاس ثگیشد pdf بلت دس هبلت یک كبیلعؼی خاذ ؽذ ک پظ اص پبیبى ش هغوت، هط (6

: هبثغ هسد اعتلبد ایي اهصػ ػجبستذ اص (7

( Foundations of WPF: An Introduction to Windows Presentation Foundationالق

Page 2: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

---------------------------------

( #Windows Presentation Foundation with .NET 3.5, Second Edition ‎Pro WPF in C :2008ة

---------------------------------

( Programming WPF د

Building Windows UI with Windows Presentation Foundation

---------------------------------

( MSDN Libraryد

Page 3: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

---------------------------------

WPF Articles In Code Project )

Windows Presentation هوذه ای ثش تکلژی : ثخؼ الFoundation

تکلژی بی رذیذ دات ت : هغوت ال

هؾکلات تکلژی بی هجل دس ؽخقی عبصی اثضاسب : هغوت دم

WPF و عبد ای اص کبسثشد : هغوت عم

Directx ،GDI +GDI استجبه آى ثب WPF :هغوت چبسم

WPF ػذم اثغتگی ث سصلؽي فلض وبیؼ دس :هغوت پزن

WPF هؼوبسی :(هغوت ؽؾن ) آخش

WPF کبسثشد آى دس XAML صثبى : ثخؼ دم

XAML هوذه ای ثش صثبى : هغوت ال

Page 4: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

XAML کبسثشد بی هختلق صثبى : هغوت دم

تضسین ؽذ ث اعوجلی ب BAML ث كبیل بی XAML کبهپبیل : هغوت عم

XAML عبختبس كبیل بی : هغوت چبسم

XAML ؽکل عبد یک عذ :هغوت پزن

XAML كنبی بم ب دس : هغوت ؽؾن

XAML خاؿ سیذاد ب دس :هغوت لتن

XAML سیذاد ب دس :(هغوت ؾتن ) آخش

چیذهبى هشاصی کتشل ب : ثخؼ عم

هوذه : هغوت ال

WPF چیذهبى ػبفش دس :هغوت دم

StackPanel کتشل : هغوت عم

StackPanel اداه کتشل :هغوت چبسم

Canvas کتشل :هغوت پزن

DockPanel کتشل :هغوت ؽؾن

WrapPanel کتشل :هغوت لتن

Page 5: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

UniformGrid کتشل :هغوت ؾتن

Grid کتشل :هغوت ن

اداه کتشل گشیذ :هغوت دن

تشل گشیذاداه ک :هغوت یبصدن

اداه کتشل گشیذ :هغوت داصدن

هضذد عطش عتى ب دس کتشل گشیذ :هغوت عیضدن

Content Controls :ثخؼ چبسم

هوذه :هغوت ال

Content خبفیت :هغوت دم

ScrollViewer کتشل -کتشل بی هضتا ثب خاؿ یژ :هغوت عم

Scroll Viewer اداه کتشل :هغوت چبسم

GroupBox کتشل :هغوت پزن

TabControl کتشل:هغوت ؽؾن

Expander کتشل:هغوت آخش

Page 6: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

تکلژی بی رذیذ دات ت

وشا ثد، 2002ک وشا ثب یژال اعتدی 1.0اص صهبى ظس دات ت، ثب الیي غخ آى یؼی دات ت كشین سک

اص ایي تکلژی هی ثبؽین، تـییشت ثغیبسی دس آى ث رد آهذ اعت. اكضد ؽذى 3.5ؽبذ غخ تب ث اهشص ک

ای ک هب آى ب سا دات ت اعوجلی هی بهین، وچیي امبك ؽذى DLL کلاط بی رذیذ دس ؿبلت كبیل بی

.تکلژی بی رذیذ ث ایي هزوػ ثبػج گغتشػ کبسثشد ایي هزوػ ؽذ اعت

دات ت كشین سک، تکلژی بی رذیذی یض ث رد آهذ. ایي تکلژی ب، ک ثش 3.0وضهبى ثب ظس غخ

خلاف تقس عطضی اثتذایی ثغیبسی اص ثشبه یغبى دس اثتذای ظس آى ب، فشكب امبك ؽذى تؼذادی دات ت

بسی سا دس اهش ثشبه یغی دات ت ث رد اعوجلی ث دات ت اعوجلی بی هجلی، تلوی هی ؽذ، تـییشات ثغی

دات ت كشین سک تعو ؽشکت 3.0ثب غخ WCF WWF ث وشا تکلژی بی WPF آسد. تکلژی

.هبکشعبكت هؼشكی ؽذذ

.خاین پشداخت WPF خاین دیذ عپظ ث ثضج افلی، یؼی WCF WWF دس اداه تمیش هختقشی سارغ ث

Windows Communication Foundation

هی ثبؽذ، تشکیت ؽذ تکلژی بی استجبهی Windows Communication Foundation ک هخلق WCF تکلژی

، تکلژی بی استجبهی 2.0رد داؽت، هی ثبؽذ. دس دات ت كشین سک 2.0هختللی ک دس دات ت كشین سک

ک ثب بم WCF ، استجبهبت ددیی ثی ؽذ ... . تکلژی Soap ت ثش پبیثیي عیغتن ب ػجبست ثدذ اص، استجبهب

Indigo یض ؽبخت هی ؽد، توبهی رج بی استجبهی ثیي عیغتن ب سا دسى خد داسد. رت هطبلؼ ثیؾتش ث

آدسط

Windows Communication Foundation

WCF

.هشارؼ وبییذ

Windows Workflow Doundation

ؾبى داد WF هی ثبؽذ ثیؾتش ث فست هخلق Windows Workflow Foundation ک هخلق WWF تکلژی

هی ؽد، اهکبى پیبد عبصی صل هغبئل پیچیذ دیبی پیشاهى خد سا ک دس صبلت ػبدی هوکي اعت صل آى

Sequential State ذ. دس کل د ؽکلثغیبس پیچییذ دؽاس ث ظش آیذ، ث فست ثقشی ثغیبس عبد اسائ هی ک

Machine سا هی تایذ ثب WF پیبد عبصی کیذ. ث ػاى و ثغیبس عبد ث ساصتی هی تایذ یک دعتس چذ

ؽشهی سا ث فست کبهلا اتضاػی ثب اهکببتی ک ثشای هشاصی آى هرد اعت، پیبد عبصی وبییذ. ث ػاى

Page 7: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.هی ثبؽذ Sequential اص ع WF یبد عبصی یک دعتس چبس ؽشهی دس عیغتنهخبل، و صیش، پ

ث آدسط بی صیش هشارؼ وبییذ WF رت اهلاػبت ثیؾتش دس هسد

Windows Workflow Foundation

WWF

: کت

یض info Card ثد ک ثب بم Windows CardSpaceهتؾش ؽذ، 3.0تکلژی دیگشی ک وشا ثب دات ت كشین سک

هؼشف هی ثبؽذ. ک رت اهلاػبت ثیؾتش هی تایذ ث آدسط بی صیش هشارؼ وبییذ

Info CardSpace

Page 8: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ک استجبه ثغیبس ضدیکی یض ثب ن WPF ط اص تمیش اؽبسات هختقشی دسثبس تکلژی بی وپبی تکلژی

Windows Presentation عش آؿبص ع کلو WPF .خان پشداخت WPF داسذ، ایک ث هؼشكی تکلژی

Foundation هی ثبؽذ. ش کغی ک تب ث صبل دس هضیو بی گشاكیکی یب ث افلاس ثشبه یغبى، هضیو بی

یض WinApp ب ک گبب ث فست هخلق Windows Application یژال، ثشبه یغی کشد ثبؽذ، یویب ثب هلبین

یغی وضهبى ثب سد عیغتن ػبهل بی یذص دس دیبی بهیذ هی ؽذ، آؽب هی ثبؽذ. ایي ع ثشبه

کبهپیتش ؽشع ؽذ سص ث سص ثب ث رد آهذى صثبى بی هتلبت ربیگب هضجثتشی ضد ثشبه یغبى پیذا کشد. دس

کلژیایزب هقذ تمیش دادى ایي ع ثشبه یغی سا ذاسم. كوو گبی گزسا ث آى خان داؽت تب هلم ت

WPF ،ثشایتبى سؽي تش گشدد. وبطس ک هی دایذWindows Application ب، اص API ( بی عیغتن ػبهل هشثه

یض هی ثبؽذ( ثشای تشعین ػبفش گشاكیکی یب وبى ػبفش یژال، اعتلذ هی کذ. ث ػاى XP ک اکخشا یذص

یذص API یبسی اص ػبفشدیگشی ک ثب آى ب آؽب غتیذ، اص تاثغهخبل ثشای تشعین ااع دکو ب، كشم ب ثغ

کوک گشكت هی ؽد. ویي هغئل ثبػج ایزبد هضذدیت ثشای ثشبه یغبى دس ایزبد کتشل بی علبسؽی ثب

یض رد داؽت، هی 2.0ظبش دلخا خد ؽذ ثد. اگش چ ثب اثضاس بی گشاكیکی ک دس دات ت كشین سک

تاغتین تب صذ خثی اهذام ث ایزبد کتشل بی هسد دلخا خد سا ثکین، اهب ایي همع یبص ث داغتي اهلاػبت

صیبد دس هسد ایزبد کتشل بی علبسؽی وچیي ؽتي گبب کذ بی ثغیبس صیبدی رت ایزبد کتشل هسد ظش

کتشل ب ثغت ثد وی تاغتیذ ث ساصتی کتشل ب سا هی ثد. ایي ث آى دلیل ثد ک هبلت اعبط الی

اهذام ث Control ؽخقی عبصی وبییذ. دس ثتشیي صبلت، یک ثشبه یظ هبش هیتاغت ثب اسث ثشی اص کلاط

تی ایزبد یک کتشل رذیذ ثب ظبش اهکببت هسد ظش خد ثکذ. ث ػاى هخبل کتشل هی صیش سا اخیشا ثشای ؽشک

خو کذ ث ؿیش اص کذبی تلیذ ؽذ تعو خد دات ت 1000هشاصی کشدم. تب، یکی اص کلاط بی ایي ه داسای

خو، ثشای ی ثشبه یظ ثغیبس بچیض ثبؽذ. لی چبچ ثخایذ توبهی کتشل بی ثشبه 1000هی ثبؽذ. ؽبیذ

یبدی اص هت ؽوب فشف ؽتي کذ ب هی گشددبی خد سا، خدتبى هشاصی کیذ، هی ثییذ ک صهبى ص

Page 9: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ایي هغئل صهبی ود ثیؾتشی پیذا هیکذ ک ثخایذ، اکخش رج بی یک کتشل سا دس کتشل علبسؽی خد هشس

ػاى هخبل ث دلیل هشاس گشكتي صبلت بی هختلق گشادیبى ثش سی ه، اعتلبد اص اهکببت هجلی هبذ دیذ. ث

تشعین هتي آیتن ث فست اتهبتیک تعو خد ه یب تشعین کلیذ بی هیبى ثش آیتن .... اص ثیي هی سد توبهی

ت ک هی تاى اص کتشل بی ایزبد ؽذ تعو خدتبى ایي هاسد ثبیغتی ثب کذ تعو ؽوب ایزبد گشدد. دسعت اع

ث کشات دس ثشبه بی هختلق اعتلبد کیذ لی تزشث ؾبى داد اعت ک گبی یض هزجس ث ایزبد کتشل

دیگشی ؽیذ. ایي ث ایي دلیل یغت ک ؽوب الضاهب کتشل هجلی خد سا خة هشاصی کشد ایذ. ػاهل صیبدی هی

.ثبػج ثشص ایي هسد ؽذ ک پشداختي ث آى ب اص صفل ایي ثضج خبسد اعت تاذ

خان WPF ث سػ ربسی ؽذیذ، دس اداه ث هؼشكی WinApp صبل ک تب صذدی ثب هؾکلات ثشبه یغی بی

.شتلغ هی کذچگ ثغیبسی اص هؾکلات هرد سا ه WPF پشداخت دس اداه ثضج بی ایي آهصػ، خایذ دیذ ک

ث سؽی دیگش ػول هی کذ. دس اهغ ػلا ثش ایک ایي تکلژی وچبى داسای کتشل بی عبثوی WPF تکلژی

ک آى ب سا هی ؽبعیذ، هی ثبؽذ، هی تاذ دعتشعی ث ثیؾتش رج بی کتشل ب سا ثشای ؽوب كشان کذ. دس

ش کتشلی هبذ ثشبه یغی هجل، ثغت یغت ایي ؽوب دس ایي اعت ک اعبط پبی WPF اهغ هذست

خایذ گلت ک هتي سی کتشل سا ث چ فستی هشاصی کیذ. یب پظ صهی کتشل یب کبس بی WPF غتیذ ک ث

ای آى سا ث آى فستی ک ؽوب هی گئییذ هشاصی کذ. ث ویي هظش یض داسای اثضاسبی ثغیبس صیبدی رت کبس ثش

هشاصی کتشل بی ؽوب هیب هی کذ. اثضاسبیی هبذ هلن ه بی گشادیبى ثب تؼذاد سگ بی بهضذد، ااع اثضاس

بی گشاكیکی ثشای تشعین ؽکل دلخا ؽوب، اهکبى ایزبد اكکت بی ثغیبس صیجب هتع ثش سی ش هغوتی اص

ثؼذی، اهکبى ایزبد 3ثؼذی یض 2اهکبى هشاصی بی کتشل ک ثخایذ، رد اكکت بی اص پیؼ تؼشیق ؽذ،

.ایویؾي ثغیبسی اص اهکببت دیگش ک ث هشس ثب آى ب آؽب خایذ ؽذ

اعتاس هی ثبؽذ. ایي همع عجت هی ؽد ک ثتاى اص ثغیبسی اص رج بی Directx ثش WPF پبی اعبط

به ثش ثشد دس اهغ ثشبه بیی ثب ظبش بیی ثغبصیذ ک عبختي آى گشاكیکی ثذى ایزبد عشثبس امبكی ثش سی ثش

ب ثب ثشبه یغی بی پیؾیي یب ؿیش هوکي یب هتضول کبس ثغیبس صیبدی ثد اعت. اگشچ وط هت ایي

م ث ایزبد اهذا WPF تکلژی اػوبل گشاكیکی، ایویؾي .. هی ثبؽذ، لی ایي ثذاى هؼی یغت ک وی تاى ثب

كشم ب کتشل بی عبثن ود. ایي تکلژی ث ؽوب اهکبى اعتلبد اص کتشل بی پیؾیي سا هی دذ وچیي

WPFسا ث وبى ؽکلی ک هی ؽبعیذ، ثشای ؽوب هوذس هی عبصد. ػلا ثش ایي هاسد، WinApp ثشبه یغی

.ؽذى آى ب ... سا ثشای ؽوب هیب هی عبصد Print اهکبى کبس ثب اعبد هتی، کتشل کشدى ثش سی ض

ثبیذ ثذاى اؽبس کشد، اهکبى ثشبه یغی ث ؽی ای اعت ک ؽبیذ تبکى اهخبل آى WPF کت دیگشی ک دس هسد

بهی ثبؽذ ک ث آى WPF سا یب ذیذ ایذ یب ثغیبس کن دیذ ایذ آى ن ثشبه یغی ثش اعبط ػبفشی دس

Page هی گیذ. ایي ع ثشبه یغی سا هی تاى ث ػی ؽجی عبصی ثشبه بی ة بهگزاسی کشد. ایي ع

بم داسد ک دس ثخؼ بی ثؼذی تلبت آى سا ثب ثشبه یغی هؼولی WPF Browser Application ثشبه یغی

WPF ذ اعوجلی بی ایزبد ؽذ سا دس هشسگش ة ظیشخایذ آهخت. تعو ایي هذل ثشبه یغی، هی تای

Internet Explorer ثذى پیـبم بی اهیتی ک هؼولا دس فلضبت ة رد داسذ، وبیؼ دیذ. ث ػاى هخبل

هی ثبؽذ WPF رت وبیؼ ة عبیت ب دس یک ثشبه Page ػکظ صیش و ای اص ض اعتلبد اص

Page 10: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

اهکبى پزیش اعت، دس ثشبه بی ثش پبی WPF الجت اعتلبد اص اهکببت هختلق گشاكیکی ث هبذ آچ دس ثشبه بی

.مع سا دس ثخؼ بی آتی خایذ داغتفلض . اهکبى پزیش یغت. دلایل ایي ه

User32 ،GDI ،GDI+ DirectX

ثشای تشعین ػبفش گشاكیکی اعتلبد هی +User32 GDI/GDI ث هس کلی ثشبه بی یذصی اص د اهکبى، تاثغ

ب، دکو ب ... اهکبى تشعین ػبفش یژال سا ثب ظبش ػبدی هیب هی کذ. ػبفشی هبذ كشم User32 کذ ک

GDI/GDI+ اهکببت گغتشد تشی سا رت ایزبد ثشخی اػول گشاكیکی هبذ ایزبد گشادیبى ب ... سا هیب هی کذ.

ؽشکت هبکشعبكت ث دلیل هضذدیت بیی ک دس ش یک اص دثخؼ كم، رد داعت، اهذام ث ایزبد کتبثخب

.. ؽد(. ایي اثضاس ک اهشص یض Sound هی تاذ ربیگضیي کلوبتی هبذ X صشفکشد.) DirectX عطش ثبلایی ث بم

اص آى اعتلبد بی صیبدی هیؾد،) اص رول دس ایزبد ثبصی بی ع ثؼذی ... ( ثب ثش گیشی اص تاى کبست بی

.س هی ثشدگشاكیکی ثب ثش ثشی ثبلا، صذاکخش تاى آى سا ثشای ایزبد گشاكیک بی هی ث کب

اهب ثب هذست صیبد ایي کتبثخب، ث دلیل ثشهشاسی استجبه هؾکل ثب اى یبص ث کذ یغی بی صیبد، ایي اثضاس ثیؾتش دس

Page 11: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

تی ثبصی ب ثشبه بی گشاكیکی هسد اعتلبد هشاس گشكت ربیگب صیبدی دس تعؼـ ثشبه بی تزبسی پیذا

.کشد

ایي هؾکلات سا هشتلغ کشد دس اهغ کبسثش سا اص دسگیش کشدى ؽتي کذبی صیبد گب هبهت توبهی WPF تکلژی

3ثؼذ، 2رت ایزبد گشاكیک بی DirectX اص توبهی هذست WPF .، سبیی داد DirectX كشعب ث فست هغتوین دس

هشاصی کشدى دس اختیبس ؽوب هشاس ثؼذی، ایزبد ایویؾي ب، اعتلبد هی کذ. وچیي اثضاس بی ثغیبسی سا رت

... تطجین پیذا هی کذ، Texture ،Gradient ث رت ایک ث خثی ثب هلبین DirectX هی دذ. ػلا ثش ایي

هی ثبؽذ. ث ایي دلیل ک ایي تکلژی ب ثشای سذس کشدى اص سػ +GDI GDI دساسای عشػت ثبلاتشی غجت

.گلت هی ؽد، اعتلبد هی کذ Pixel By Pixel Instruction افطلاصبپیکغلی الگسیتن بی آى ک

ث فست هغتوین رد داؽت) داسد( ث دلیل ع ثی عبصی DirectX یکی دیگش اص هؾکلاتی ک کبس کشدى ثب

.اعت ایي هؾکل یض هشتلغ ؽذ WPF ض سذس کشدى اؽکبل تعو کبست بی یذییی هتلبت ثد، ک ثب

رت ازبم ستیي بی پیچیذ گشاكیکی هی ثبؽذ ک CPU ث ربی GPU اعتلبد اص WPF یکی اص هوتشیي اذاف

.ثد ک هیتاذ ث پشداصػ بی دیگش دس عیغتن سعیذگی کذ CPU ایي اهش ثبػج آصاد ثدى

WPF ث عاى یک API ضطح ثبلا

هبدس ث ازبم کبس بی ثغیبسی ثشای ؽوب خاذ ثد ک هجل اص آى، ازبم WPFوبهس ک پیؾتش تمیش داد ؽذ،

آى ب ثغیبس هؾکل صهبى ثش یبص ث ؽتي کذ بی ثغیبسی هی ثد. دس اداه ث فست لیغت اس، تؼذادی اص

:اهکببت ایي تکلژی وشا ثب تمیش هختقش آهذ اعت

اص ػبفش رذیذ ثغیبسی دی تشاص ثذی چیذهبى WPF :هشس ثذی ارضا ػبفش ثشبه ؽجی ثشبه بی تضت ة

Panel کتشل ب ػبفش هختلق ثش سی كشم بی ثشبه ؽوب اعتلبد هیکذ. تعو ایي اثضاس ب ک اص کلاط پبی

خد سا چبى تظین کیذ، ک ثشبه ؽوب دس سصلؽي بی اسث ثشی هی کذ، هبدس خایذ ثد ک چذیوبى ػبفش

.هختلق ث خثی هبثل وبیؼ ثبؽذ

: WPF کت هن ثطیبر حیبتی در گبم کبر کردى ثب تکلژی

اؽیبء ثشای چیذهبى آى ب اعتلبد خاذ Width Height صشك ای صتی الووذس اص خاؿ WPF یک ثشبه یظ

ب ثشایتبى ؿیش هبثل تقس اعت. ث ایي دلیل ک تب الاى ش ػقشی ک دس ثشبه خد اعتلبد کشد ایذ، پظ اص کشد. یوی

بهگزاسی آى اهذام ث ایزبد عبیض هبعت آى وذ ایذ. اهب دس و ثشبه ب ثخؼ بی آتی خایذ دیذ، ک

ؿیش اثغت ثدى ث سصلؽي WPF همع ث دلیل هبیتکوتشیي اعتلبد سا اص ایي د خبفیت خاین کشد. ایي

.فلض وبیؼ هی ثبؽذ ک دس هغوت ثؼذی ثیؾتش ث ؽشس آى خان پشداخت

---------------------------------------------------------------

: WPF ثرخی از اهکببت چج بی ثربه یطی ثب

: هذل قذرتوذ قی طراحی

اص دسگیش ؽذى ثب پیکغل ب کبس کشدى ثش سی اى ب سبیی خایذ یبكت دس اهغ ثب اثزکت ب WPF تعو

.اؽکبل عطش ثبلا تؼبهل خایذ داؽت. وچیي هبدس ث ایزبد اؽکبل ع ثؼذی ... خایذ ثد

:کت

ث خثی WPF ذی هی ثبؽذ. دس اهغ گشچ ثبداساعت، کبس کشدى ثب اؽکبل ع ثؼ WPF یکی اص هضذدیت بیی ک

Page 12: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

کبسایی WPF هی تایذ اهذام ث تشعین ایي ع اؽکبل وبییذ، اهب اص لضبظ کبسایی، اؽکبل ع ثؼذی ایزبد ؽذ ثب

ث فست هغتوین هی ثبؽذ. ث ویي OpenGL یب DirectX کوتشی غجت ث ع بی هؾبث تلیذ ؽذ ثب

هوکي اعت اتخبة خثی جبؽذ. چى WPFسا داسیذ، Real Time ؽتي ثبصیبی ع ثؼذیدلیل چبچ هقذ

هوکي اعت آى کبسایی سا ک اتظبس داسیذ ثشای ؽوب كشان کذ.دس ایي هاسد هی تایذ اص هضیو بی دیگش هبعت

.ایگ ثشبه ب اعتلبد وبییذ

-----------------------------------------------------------

:ایویػي، ؾذا تؿیر

وبطس ک پیؼ تش یض تمیش داد ؽذ، ػلا ثش ازبم اػوبل ثغیبسی ک هی تایذ، ثب اؽکبل ازبم دیذ، اػن اص

وبییذ. WPF چشخؼ، ثضگش وبیی، کچک وبیی ...، یض هی تایذ اهذام ث ایزبد ایویؾي بی صیجب تعو

.یي هبدس خایذ كبیل بی فتی یذییی سا ث خثی ث کبس ثگیشیذوچ

: اضتبیل ب قبلت ب

واس یکی اص دؿذؿ بی ثشبه یغبى یذص، ایزبد ظبشی صیجب ثشای كشم ب ػبفش خد ثد اعت. تب آى رب

هی بهین، Third party Components ى ب ساک اکخش ثشبه یغبى ث عشاؽ کبهپت بی ؽشکت بی حبلج ک آ

سكت اص آى ب ث کشات دس ثشبه بی خد اعتلبد هی کشد هی کذ. هي رذای اص ایک ایي کبهپت ب چوذس

دس ػول کبسایی دسعت صغبة ؽذ ػول هی کذ، ایک ثب هؼیبس بی صثبى كبسعی هتبعت غتذ ) ک

، دلیل دیگشی ثشای اعتلبد کشدى اص ایي ع کبهپت ب داسم اى ن اثغتگی ثشبه ؽوب ث اکخشا یغتذ(

آثزکت ب ػبفش ؽشکت بی دیگش خاذ ثد. ایي همع هی تاذ دس هلای هذت اعتلبد هکشس اص ایي ع

توشیجب توبهی ایي هؾکلات سكغ ؽذ WPF کلژیاثضاس ب، مشسبی رجشاى بپزیشی ث ثشبه یغیبى اسد وبیذ. ثب ت

ث ساصتی هی تایذ اهذام ث ایزبد اعتبیل ب هبلت بی هتبعت ثب هؼیبس خد ثشبه خد، وبییذ. چبچ

ثشبه یغی هغلو ث ایي هاسد گشدد، هطوئي غتن ک دیگش ث یچ ػاى ث دجبل اثضاس بی ظبش عبصی

.ب کبهپت بی هتلبت خاذ سكتثشبه

: (Commands ) دضترات

ب ثشای وبگ عبصی اکؼ Command اعتلبد اص WPF یکی اص رج ب اهکببت كم الؼبد صیجب هذستوذ

بی هختلق کبسثش وبگ عبصی هغوت بی هختلق ثشبه ث کبس هی سد ک دس ربی خد، هلقلا ث ؽشس آى

تلبد اص ایي اثضاس، كم الؼبد ؽگلت صد خایذ خان پشداخت. كؼلا ث ویي هذس ثغذ کن ک ثب یبدگیشی اع

.ؽذد خایذ دیذ ک ثشبه بی ؽوب ثب ایي اثضاس ث چ دسفذ ثبلایی اص کبسایی خاذ سعیذ

ثشبه بی ثش پبی فلض : کوی پیؼ تش دس ایي هسد فضجت کشدم و ػکظ ثشبه ای سا ن ک اص فلضبت

ذ کشدیذ. دس ههؼیت هبعت تشی ثش سی ایي ع ثشبه یغی یض توشکض ثیؾتشی اعتلبد ؽذ ثد سا هؾب

.خاین کشد

: ایجبد اضظ کبرثر ث ؾرت تؾیفی

ک یک صثبى تفیلی XAML .هی آیذ XAML ثشد هیؾد، دس اداه آى بهی ن اص WPF صهبی ک بهی اص تکلژی

XML Based ل اعتدی ث کبس گشكت هی ؽد تب ؽوب ثتایذ كشم ب ػبفش خد سا ثب هی ثبؽذ، تعو یژا

دس عشػت تلیذ ثشبه بی ؽوب، XAML عشػت ثیؾتشی ایزبد وبییذ. ث رشات هی تان ثگین ک اعتلبد اص

ى ربیی ک تبحیش چؾوگیشی خاذ داؽت. دس اثتذا هوکي اعت دس اعتلبد اص آى کوی دچبس عشدسگوی ؽیذ، تب آ

ثخایذ آى سا سب کیذ اهذام ث ایزبد هضیو اعو ثشبه خد ثب کذ وبییذ. اهب ثب کوی تلاػ هغلو ؽذى ثش آى ،

لض کبس کشدى ثب آى لزت خایذ ثشد، تب ربیی ک یچ هت دعت ذاسیذ دیگش عشاؽ کذ یغی ثشیذ!!! ) الجت ایي ی

(ص ث کذیغی ن خایذ داؽتاهش هضبل خاذ. چى صتوب یب

:ث رزلغي WPF عذم اثطتگی

ػذم اثغتگی آى ث سصلؽي فلض وبیؼ اعت. اگش WPF ثذى ؽک یکی اص رج بی كم الؼبد هلیذ هی

Page 13: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

WPF ث خبه داؽت ثبؽیذ، کوی پیؼ دس یک کت هن، ایي همع سا یبدآس ؽذم ک یک ثشبه یظ صشك ای دس

ػبفش ثشای چیذهبى آى ب اعتلبد خاذ کشد. دلیل ایي گلت سا دس اداه Width Height صتی الووذس اص خاؿ

.هتر خایذ ؽذ

ثشبه بی تضت یذصی ک تب کى ثب تکلژی بی هرد ؽت هی ؽذذ) هی ؽذ( اثغتگی صیبدی ث

ث 768* 1024هخبل كشم بی ؽوب، ک دس فلض وبیؼ ؽوب ثب سصلؽي سصلؽي فلض وبیؼ داسذ. ی ػاى

ب ثغیبس Laptop خثی هشاصی ؽذ اذ، هوکي اعت دس یک کبهپیتش دیگشی ثب سصلؽي ثبلاتش اص اى )ایي اهش دس

ستی ک هیتس اعتلبد هی کذ. دس ف DPI 120هؼول هی ثبؽذ. ػلا ثش ایک اى ب دس ثیؾتش هاهغ اص تشاکن

اعتلبد هی کذ. "گش چ هبثل تـییش هی ثبؽذ" ( کچک ؽد، ثش ػکظ، دس DPI 96هؼولا اص تشاکن CRT بی

.یک عیغتن ثب سصلؽي پبییي، هغوتی اص كشم بی ؽوب اص فلض وبیؼ خبسد گشدد

بفی ثشای اذاص گیشی ارضاء ػبفش ایي هؾکلات هشتلغ هی گشدد. دلیل آى ن اعتلبد اص عیغتن خ WPF اهب ثب

DIU (Device ثشبه ؽوب، هی ثبؽذ. ػبفش، اػن اص دکو ب، كشم ب ش ؽی هبثل اذاص گیشی ثب اصذی ثب بم

Independent Unit ) اذاص گیشی هی ؽذ. ش یک DIU ( ش ایچ هی ثبؽذ. دس 96توغین ثش 1) 1/96هؼبدل ثب

پیکغل 1، دهیوب ثشاثش ثب DPI 96دس فلض وبیؾی ثب تشاکن پیکغل اعتبذاسد یؼی DIU شاهغ هی تاى گلت

دس وبى سصلؽي ) DIU ثبلاتشی اعتلبد گشدد، هجیؼتب ش یک DPI كیضیکی دس فلض وبیؼ هی ثبؽذ. صبل اگش اص

(پیکغل خاذ ؽذ) چشا؟ 1هجلی(کوتش اص

سصلؽی ک ثب كشهل هؾخقی هضبعج هی ؽد، هی تایذ عبیض هبعت دس ش DPI ثب اذاص گیشی WPF صبل

786*1024دس سصلؽي Button ػبفش ؽوب سا هضبعج کذ. ایي سػ ثبػج هی ؽد ک وبیؼ یک کتشل هبذ

.یکغبى ثبؽذ DPI 120 ثب تشاکن 1200*1600تشاکن، ثب وبیؼ آى دس سصلؽي DPI 96ثب

ایک چشا جبیذ صتی الاهکبى ػشك استلبع کتشل ب سا ث فست هطلن دعتی تؼییي کشد سا هتر صبل ثبیذ دلیل

(ؽذ ثبؽیذ. )چشا؟

WPF : هعوبری

هشا گشكت اذ WPF یک تکلژی چذ لای هی ثبؽذ.دس ثبلاتشیي لای آى اعوجلی بی پبی ای اعبی WPF تکلژی

بی API ذیشیت ؽذ عی ؽبسپ هی ثبؽذ. ایي لای ؽبهلک توبهب ث فست کذ بی ه

PresentationFramework.dll ،WindowsBase.dll PresentationCore.dll هی ثبؽذ ک دس اهغ ثشبه ؽوب ثب ایي

.اعوجلی ب استجبه خاذ داؽت

ؽت ؽذ تعو ؽوب، اص هشین لای هشاس داسد. توبهی کذبی milcore.dll دس لای صیش آى، کبهپت هذیشیت ؾذ

.ال استجبه لای ال ثب لای دم کبهپت هزکس تجذیل آثزکت بی هسد ظش هی گشدد

ث فست هذیشیت ؾذ هی ثبؽذ، ایي اعت ک ایي کبهپت ثبیغتی milcore.dll دس اهغ دلیل ایک کبهپت

.داؽت ثبؽذ یض داسای کبسایی ثغیبس ثبلایی اص ش لضبظی ثبؽذ Direct3D استجبه تگبتگی هزتوغ ؽذ ای ثب

Direct3D دس لای صیشیي milcore.dll هشاس گشكت اعت ک ث فست یک API عطش پبییي هی ثبؽذ دس اهغ ث ػی

.یض ث صغبة هی آیذ milcore ث وشا WPF هتس

ؾبى داد ؽذ اذ WPF دس ؽکل صیش ثخؼ بی هختلق هؼوبسی

Page 14: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

سا تؾکیل WPF بی عطش ثبلا ک دس اهغ پبی اعبط API وبطس ک گلت ؽذ، ثشبه ؽوب دس ثبلاتشیي عطش ثب

:، استجبه ثش هشاس هی کذ. دس اداه ث تؾشیش ش یک اص ایي کبهپت ب اثضاس ب خان پشداختهی دذ

PresentationFramework.dll : ایي اعوجلی دس اهغ توبهی آثزکت بی عطض ثبلا دس اهغ ث ػی ثبلاتشیي

سا دس هذل ثشبه یغی WPF به بیب ) ک ثبلاتشیي عطش دس ثش Windows هبذ WPF عطش اص آثزکت بی

WPFApplication )داسا هی ثبؽذ Panel ب ک اص دیگش ارضاء اعبعی ثشبه بی WPF هی ثبؽذ،سا گ داسی هی

.کذ

، کلاط پبی ثشای Panel ب دس ثشبه بی هؼولی دس ظش ثگیشیذ. وچیي Form ب سا ث هبذ Windows هی تایذ

، StackPanel، (ک هوتشیي آى ب پش کبسثشد تشیي آى ب هی ثبؽذ ) Grid اص رول Container کتشل بیتوبهی

Canvas هی ثبؽذ ... .

Presentationcore.dll : ؽبهل ع بی پبی اص رول UIElement Visual هی ثبؽذ ک توبهی اؽکبل کتشل

سا هؾبذ WPF س هغوت ثؼذی وداسعلغل هشاتجی کلاط بیبی اص ایي کلاط ب اسث ثشی هی کذ. د

.خایذ کشد

Milcore.dll : دس اهغ غت افلی WPF دس سذس کشدى آثزکت ب ث آثزکت بیی ک لای صیشیي خدػ یؼی

Direct3D یبص داسد، هی ثبؽذ. ػلا ثش ایي دس یذص یغتب، هذیش پزش بی دعکتبپ یؼی Desktop Windows

manager ( اص ویي کبهپت اعتلبد هی کذ. دس اهغ )ک ػول هذیشیت پزش بی دعکتبة سا ثش ػذ داسد

، ث كشم ب، یب فضیش تش ثگین ث پزش بی ثشبه خد، اكکت بیی ک پزش DWM ؽوب هی تایذ ثب كشاخای

.بی یذص یغتب داسا غتذ سا امبك وبییذ

Page 15: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:کت

دهت کیذ ک ایي اكکت ب ثش سی یذص یغتب ث تبیی هبثل پیبد عبصی غتذ. گشچ اثضاس ب کبهپت بی

Cross ،یض ثشای ایي کبس ؽت ؽذ اذ لی ث فست ػبدی ثشبه بیی ک ثش سی یذص یغتب ارشا هی ؽذ

ثبؽذ هی تاذ هبثلیت اكکت بی یذص یغتب سا داسا

WindowsCodec.dll : یک API عطش پبییي هی ثبؽذ ک هبثلیت اػوبل، کبسبی صیبدی سا ثش سی ػکظ ب، اص

.هجیل ثضسگ وبیی، چشخؼ .. سا داسد

Direct3D : یض یک API عطش پبییي اعت ک ؽبهل توبهی گشاكیک بی سذس ؽذ دس WPF هی ثبؽذ.

WPF درضبختبر ضلطل هراتجی آثجکت ب

.ؾبى هی دذ WPF ؽکل صیش عبختبس علغل هشاتجی آثزکت بی هختلق سا دس تکلژی

Page 16: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:سا دس ظش ثگیشیذ Button ث ػاى هخبل کلاط

اسث ثشی هی کذ ث تشتیت اص کلاط بی صیش اسث ثشی کشد تب ButtonBase ایي کلاط دس الیي عطش اص کلاط

.ثشعذ DispatcherObject بیتب ث کلاط

Page 17: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

DispatcherObject

.

.

DependencyObject

.

.

Visual

.

.

UIElementt

.

.

FrameWorkElement

.

.

Control

.

.

COntentControl

.

.

ButtonBase

.

.

Button

.تشتیت اسث ثشی ب اص پبییي ث ثبلا هی ثبؽذ

Page 18: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

Prof ثغیبسی اص ایي کلاط ب سا دس ثخؼ بی آتی ؽشس خان داد. اهب هی تایذ رت اهلاػبت ثیؾتش ث کتبة

WPF in C#‎ 2008 ؽت Matthew macDonald هشارؼ کیذ 50، فلض.

****************

پبیبى هی پزیشد. اص پغت بی ثؼذی، ثخؼ دم، ک هشثه ث WPF ثب ایي هغوت، ثخؼ ال، یؼی هوذه ای ثش

.هی ثبؽذ، ؽشع خاذ ؽذ XAML تؾشیش

سا ک ػی صثبى ؾب گزاسی هی ثبؽذ سا تؾشیش کن ض اعتلبد اص آى XAML دس ایي ثخؼ هقذ داسم، صثبى

. یض دس یژال اعتدی سا ثیبى کن WPF ربیگب آى سا دس تکلژی

هخلق ػجبست XAMLاؽبس ای هختقش کشدم، ( WPF وبطس ک دس ثخؼ هجلی ) هوذه ای ثش

EXtensible Application MarkupLanguage هی ثبؽذ. صثبى XAML ک یک صثبى تفیلی هی ثبؽذ، ثش پبی هاػذ

XML هی ثبؽذ. ایي صثبى دس ایزبد ثشبه بی WPF وؼ ثغیبس هحشی سا ثبصی هی کذ.

دسى آى هرد قت ؽذ هی ثبؽیذ، ثشای و عبصی تؼشیق 2008ایي صثبى ک وشا ثب یژال اعتدی

ث کبس هی سد. هظس اص آثزکت، دس ایزب یک اژ کلی هی ثبؽذ. اص یک خو عبد گشكت تب تلیذ WPF آثزکت بی

ایي صثبى سا ثشای WPF صثبى تفیلی هی ثبؽذ. دس اهغایزبد کتشل بی پیچیذ، وگی هبثل پیبد عبصی ثب ایي

.ایزبد اعو بی کبسثشی ثشبه بی خد ث کبس هی گیشد

ثشای هشاصی پزش ب یب فلضبت یب ش XAML اگش چ دس اثتذا هوکي اعت ایگ ث ظش آیذ ک اعتلبد اص

یذصی دس هذل بی ثشبه یغی پیؾیي ثبؽذ، لی هؾکل تش اص ض ایزبد كشم بی WPF آثزکت دیگشی دسى

ث اهغ ایگ یغت. ثب کوی تلاػ اعتلبد اص ایي صثبى، پظ اص هذتی هتر خایذ ؽذ ک تعؼ ثشبه ب

ثغیبس عشیؼتش ساى تش اص سػ بی پیؾیي XAML هشاصی پزش بی ثشبه ث وشا هضتیبت دسى آى ب، تعو

کشدى کتشل ب اؽیبء ثش سی كشم ب ثد، هی ثبؽذ. ػلا ثش ایي پظ اص هذتی خایذ Drag ک هؼولا ث فست

ث ساصتی XAML دیذ ک ایزبد آثزکت ب ث یژ ایزبد ااع اؽکبل ثب ااع اكکت بی گبگى ثش سی آى ب، تعو

% هاسد داسای99ى ایي اعت ک دس یژال اعتدی، توشیجب ثیؼ اص فست هی پزیشد. یکی دیگش اص یژگیبی ایي صثب

Intellisence ثغیبس هحش کبسا هی ثبؽذ ک ػول کذ یغی دس ایي صثبى سا ثغیبس ساصت تش هی کذ. دس اداه گبی

یذ ثشبه بیدس تل XAML گزسا ث سػ بی پیؾیي هشاصی خاین اذاخت هوبیغ خاین کشد ک اعتلبد اص

WPF چ احشاتی داسد.

: WPF طراحی اضظ بی گرافیکی کبرثر قجل از

ثشبه بی یذصی ( ویؾ ثب ثخؼ کذ ) WPF هشاصی اعو بی کبسثشی دس هذل بی ثشبه یغی هجل اص

ػاى ثبلاتشیي آثزکت ث ، ش كشم ک ث 2.0هطن ثشبه دسگیش ثد اعت. دس ثتشیي صبلت، دس دات ت كشین سک

ػاى پذس توبهی آثزکت ب دس ثشبه بی اعتلبد هی ؽذ، دساای د کلاط هزضا ثد.)غت( یکی اص ایي کلاط

ثد، )غت(. ایي هتذ ظیل هشاصی كشم آثزکت بی دسى آى InitializedComponents ب ک داسای هتذی ث بم

ثش سی كشم، کذبیی دسى هتذ هزکس ث فست Button گیشی آثزکتی هبذسا ثش ػذ داؽت. ث هضل هشاس

اتهبتیک تعو خد هضیو ثشبه یغی یژال اعتدی ؽت هی ؽذ. ایي کذ ب هشثه ث ض هشاس گیشی

هؾخـ آثزکت هسد طش ثش سی كشم ثد.)غت(. کلاط دیگش هؼولا ثشای کذ یغی ایزبد هطن ثشبه

کشدى ػولکشد كن هشثه آثزکت بی هشثه ث کبس هی سكت.)هی سد(. ایي هغئل هوکي اعت یچ ایشادی دس

یک گب عطضی ث وشا ذاؽت ثبؽذ. اهب دس گش بی ثشبه یغی، ایي یک هؼنل هی ثبؽذ. ث ایي دلیل ک

یؾتش خد سا ؾبى هی دذ ک هشاس ثشبه، ) هظس اص ویؾ هشاس ثب کذ یظ دسگیش اعت. ایي هؾکل صهبی ث

هشاس، گشاكیغت ثشبه هی ثبؽذ( اص کذ یغی هطن بی ثشبه یغی اهلاػبت چذای ذاؽت ثبؽذ

.

ک هطن ثشبه سا اص هشاصی آى رذا هی Code Behind ث رد آهذى هجضج ASP.NET 2.0 ایي همع ثب سد

.هشتلغ گشدیذ. الجت کوبکبى ثشای ثشبه بی یذصی یچ سا صل هبعجی رد ذاؽت کشد، تب صذی

ث خثی هشتلغ ؽذ ثغیبسی اص هؾکلات XAML وشا اى صثبى ؾب گزاسی WPF ایي هغئل ثب آهذى تکلژی

Page 19: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ن ض ػولکشد ثشبه، سا کبؼ داد اعت. دس ایي سػ، گشاكیغت ثشبه ثذى داؽتي دؿذؿ بیی اص هط

.اهذام ث ایزبد هشاصی پزش بی ثشبه وبیذ

هشاصی پزش ب آثزکت ب سا ثش خلاف WPF ثب كشم بی یذصی ایي اعت ک WPF دس اهغ کت کلیذی تلبت

کبهلا رذا عبصی كشم بی یذصی ث کذ تجذیل وی کذ. دس تیز هشاصی ثشبکو اص کذ یغی هطن آى

ؽذ اعت. ایي همع ویؾ ري ثشبه یغبى سا دسگیش کشد ثد. دس اهغ ثشبه یغبى صشك ای، واس دس

.تلاػ ثشای تلیذ ثشبه بیی ثدى ک هطن ثشبه اص هشاصی آى رذا ثبؽذ

: کت

صتوب ث ایي صثبى یبص داسد. اگش WPF ب یغت کث ایي هؼ XAML الجت تر ث ایي کت ثغیبس هن اعت ک رد

چیي تقسی داسیذ ثبیذ ثگن ک دس اؽتجب غتیذ. ن اکى ن هی تاى هشاصی ثشبه سا توبهب ث فست کذ

.یغی ازبم داد. اهب ایي هغئل هؾکلاتی سا ک پیؼ تش ث آى ب پشداختن سا ث رد هی آسد

---------

: عبدت ثذ

بیی ث اى plug in ثب رد ش م اكضاس بی گشاكیکی ک سص ث سص ثش تؼذاد آى ب ن اكضد هیؾ ثب امبك کشدى

سا کبس ثگزاسین اص ثشبه XAML اص آى بی جبیذ هرت ایي ؽد ک ض کبس کشدى ثب XAML ب گشكتي خشری

.ثغیبس تفی هی کن ک صیبد اثغت ایگ شم اكضاس ب ؾیذ بی آهبد اعتلبد کین.. ؽذیذا ثب تبکیذ

(!!! تؼذادی اص ایي شم اكضاس ب سا دس ثخؼ بی ثؼذی هؼشكی خان کشد. )ؽبیذ ن هؼشكی کن

:XAML کبرثرد بی هختلف

هی ؽد. اگش چ عم داد WPF ث هیبى هی آیذ، ري خیلی اص اكشاد ث عوت XAML صهبی ک فضجت اص بم

هی ثبؽذ، اهب ایي همع WPF یک اثضاس هذستوذ کبساهذ دس گبم کبس کشدى ثب ثشبه بی XAML فضیش اعت ک

.اعتلبد ود WPF تب هی تاى دس XAML فشكب ث ایي هؼی یغت ک اص

.اعتث وشا تمیش هختقشی دس ثبس آى آهذ XAML دس صیش لیغتی اص کبسثشد بی

XAML در WPF :

دس گبم ثشبه XAML وبطس ک هجلا اص اثتذای همػبت تب ثذیي رب چذیي ثبس هتزکش ؽذم، یکی اص کبسثشد بی

هی تاذ WPF دس XAML هی ثبؽذ ک اهکببت ثغیبسی سا ثشای ؽوب كشان هی کذ. ش عذ WPF یغی

ت بی هی تاذ دس ثبلاتشیي عطش، پزش بی ثبؽذ یب تب یک ثبؽذ. ایي آثزک WPF گذاسذ آثزکت بی

.ثیؾتش آؽب خایذ ؽذ WPF دس XAML آثزکت خو یب یک هغتطیل هشاصی ؽذ تعو ؽوب ثبؽذ. ثب عبختبس

XAML در WF :

گذاسذ یض هی تاذ WF دس XAMLثبؽذ، WPF هی تاذ گذاسذ آثزکت بی WPF دس XAML وبطس ک

ب .. ثبؽذ Activity Class دسای آثزکت بی ثغیبسی اص رول WPF یض هبذ WF .ثبؽذ WF آثزکت ب دس

XAMl در SilverLight : غخ ای دیگش اص WPF صد داسد ث بم WPF/E ک ث بم SilverLight یض هؼشف اعت

WPF هی تاذ ثغیبسی اص کبسبیی سا ک ثب SilverLight یب وبى WPF/E بم آى سا ثبس ب ؽیذ ایذ. دس اهغ تعو

هبدس ث ازبم آى ب دس ثشبه بی یذصی غتیذ، هبذ اؽکبل د ثؼذی، فذا، تقیش، ایویؾي ... سا دس ثشبه

.بی تضت ة ث کبس ثجشیذ

:کت

XAML ػاى هخبلکبسثشد بی دیگشی دس صیو بی هختلق دیگشی داسد. ث XPS Documentation ب یکی دیگش اص

هی ثبؽذ. ثشای Xml Paper Specification هخلق XPS .دس آى اعتلبد هی ؽد XAML صهی بیی اعت ک

تخبلی اص لطق یغ ایي هطلت ب، خاذى document آؽبیی ثب ایي ع

Page 20: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:تسریق غذ ث اضوجلی ب BAML ث فبیل بی XAML کبهپبیل

سا ث كشهتی XAML صهبی ک هشاصی بی ثشبه ازبم گشكت، دس صهبى کبهپبیل ثشبه، یژال اعتدی تگ بی

هی ثبؽذ، تشرو هی کذ. كبیل بی Binary Application Markup Language ک هخلق BAML رذیذ ث بم

BAML دساهغ كشهت ددیی ؽذ كبیل بی XAML هی ثبؽذ. ػلا ثش ایي كبیل بی BAML چى ث فست

هی ثبؽذ ن اص لضبظ عشػت XAML هزوػ ای اص ؾب بی هی ثبؽذ، ن اص لضبظ صزن کوتش اص كبیل بی

Load ؽذى، عشیؼتش اص كبیل بی XAML هی ثبؽذ. دساهغ تؼذاد خطه صیبدی دس كبیل بی XAML ث چذیي تکي

ث چ BAML تجذیل هی ؽذ. الجت تقوین گیشی دس هسد ایک چ تؼذاد خطه اص كبیل بی BAML دس كبیل بی

.ت ث چ ع تکي بیی تجذیل هی ؽذ، ثش ػذ کبهپبیلش اع BAML تؼذادی تکي اص كبیل بی

هلضن هی ؽذ. ) ایي ػول سا (dll یب exe آى ب ث اعوجلی بی ثشبه ؽوب ) كبیل BAML پظ اص ایزبد كبیل بی

.ث اعوجلی هی گیذ BAML کشدى Embed افطلاصب

(کت: )هن

ث ػاى ایي اعت ک هی تاذ ش ع كبیلی سا دسى خدػ گ داسی کذ. BAML اص ثضسگتشیي هضبعي كبیل بی

اعتلبد هی کذ. دس هذل بی ثشبه یغی پیؾیي، چبچ X هخبل كشك کیذ ک ثشبه ؽوب اص كتی ث بم

ثش سی عیغتن هوقذ رد ذاؽت، ثشبه دس هغوتی ک اص آى كت اعتلبد هی کشد، دچبس اخلال هی X كت

گش ...( الجت سا بیی ثشای هوبثل ثب ایي هؾکل رد ؽذ)ش ع اخلالی اػن اص ربیگضیي ؽذى ثب یک كت دی

كت بی هؾخقی سا ث آى امبك کیذ تب Setup داؽت. ث ػاى هخبل هی تاغتیذ، دس گبم ایزبد كبیل بی

.دس گبم قت ثشبه دس عیغتن هوقذ، كت بی هشثه ث پؽ كت دس عیغتن هوقذ کپی ؽذ

خد تضسین کیذ. دس exe ث صدی خان گلت، هی تایذ كت ب یب كبیل بی دیگشی سا ث كبیلاهب ث سؽی ک

تیز دیگش یبص یغت ک گشاى رد كت خبفی ثش سی عیغتن هوقذ ثبؽیذ هطوئي خایذ ثد ک ش رب ک

ب یغت. BAML ایي تب وط هتؽوب رد داؽت ثبؽذ، آى كت یض رد خاذ داؽت. الجت exe كبیل

Resource غتذ ثشای دعتشعی عبد آعبى ث كبیل بی XAML دعتسات ثغیبس کتبی ک هبثل اعتلبد دس

.ؽوب، اص دیگش هضایبی آى ب هی ثبؽذ ک ذس ایي هسد دس ثخؼ بی آتی ثیؾتش خایذ داغت

: XAML ضبختبر فبیل بی

هی ثبؽذ. پظ هجیؼتب ؽجبت ثغیبس صیبد XML base یک صثبى XAML وبطس ک هجلا یض ثذاى اؽبس ؽذ، صثبى

داسد ک تبکى صیبد ثب آى ب عش کبس داؽت ایذ. اهب تر ث چبس کت صیش ک ث ضی XML ضدیکی ث هبیل بی

.آ ثغیبس هلیذ ثبؽذ XAML س دسک عبختبسسا ثیبى هی کذ، هی تاذ د XAML هایي كبیل بی

: وار چبر کت زیر را ث خبط ر داغت ثبغیذ

گبؽت خاذ ؽذ ث ػاى هخبل WPF ؾبى دذ ث و ای اص کلاط خبؿ دس XAML ش تگ آؿبص ؽذ :الف

لاط، ش کلاعی هی تاذ هی ثبؽذ. هظس اص ک TextBlock ؾبى دذ آثزکتی اص کلاط <TextBlock> تگ

ایزبد کشد ایذ. صبل هی تایذ ثب دعتسی MyCustomTextBox ثبؽذ. ثؼاى هخبل كشك کیذ، کلاعی ثب بم

.سا هؾخـ وبییذ MyCustomTextBox و ای اص آثزکت <cl:MyCustomTextBox> هؾبث

:کت

یغت. دس اهغ جبیذ ایي تقس سا ثکیذ، ثشای ایزبد گبؽت ث ث کبس سكت دس دعتس كم، رضء کلوبت کلیذی cl کلو

Page 21: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

هي كشك کشد ام، دس ایي هخبل سا هجل اص ث کبس ثجشین. دس اهغ cl کلاط بی عبخت ؽذ تعو خدهبى، صتوب کلو

ى دسى آى هشاس گشكت اعت. ض هؾخـ کشد MyCustomTextBox ، اؽبس ث كنبی بهی داسد ک کلاط cl ک

.سا ث صدی كشا خایذ گشكت XAML امبك کشدى اعوجلی ب سا دس اعبد

.سا هؾخـ وبییذ XAML ث د فست هی تایذ پبیبى تگ بی :ة

.دس پبیبى تگ اعتلبد هی کیذ. ک ثیبگش پبیبى تگ هی ثبؽذ (</) دس ایي صبلت اص ػلاهت : حبلت ال

: قبعذ حی

:کذ

<[Object Name] [ Object Attributes ] />

: و :کذ

<TextBlock Text="this is a sample textBlock"/>

.دس پبیبى کذ اعتلبد وبییذ (<[ObjectName]/>) اص تگ : حبلت دم

: قبعذ حی

:کذ

<[Object Name] [ Object Attributes ] ></[ObjectName]>

: و :کذ

<TextBlock Text="this is a sample textBlock"></TextBlock>

پظ اص بم آثزکت دس تگ ؽشع کذ، هی تایذ فلبت آى آثزکت سا هؾخـ وبییذ. ث ػاى هخبل تک کذ صیش، یک :ج

Button سا هؾخـ هی کذ ک خافی ثشای آى تظین ؽذ اعت. وچیي سیذاد کلیک ثشای آى تؼشیق ؽذ

.اعت

:کذ

<Button Name="btnSum" Content="Calculate" Click="btnSum_Click"></Button>

Page 22: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

هی تایذ خاؿ ش آثزکت سا ثیي تگ بی آؿبصیي پبیبی آثزکت هسد ظش هشاس دیذ. ث ػاى هخبل کذ كم، ثب :د

:کذ صیش ثشاثش اعت

:کذ

<Button Click="btnSum_Click">

<Button.Name>btnSum</Button.Name>

<Button.Content>Calculate</Button.Content>

</Button>

: عبدت خة

عؼی کیذ، ػبدت ث اعتلبد اص سػ دم ) سػ د ( دس تظین خاؿ آثزکت ب کیذ. الجت ایي همع ثیؾتش ثشای

صهبی اعتلبد هی ؽد ک ثخایذ اص خاؿ پیچیذ تشکیجی ثشای یک آثزکت اعتلبد کیذ.) ایي همع سا کوی

، ثتش اعت ک اص سػ ) د ( ث ربی سػ ) د( اعتلبد رلتش خایذ دیذ(. لی ث ػاى و ثشای هخبل كم

.گشدد

: XAML غکل ضبد یک ضذ

بی رذیذ ث ثشبه، Window م ایزبدسا هی ثییذ. ایي کذب گب XAML دس هطؼ کذ صیش، عبد تشیي ؽکل یک كبیل

.تعو خد یژال اعتدی ایزبد هی گشدد Window ثشای ش

:کذ

<Window x:Class="WpfApplication1.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<Grid>

</Grid>

</Window>

:صبل دس اداه ارضای هطؼ کذ كم سا ثب ن خاین دیذ

.هی ثبؽذ Grid دیگشی تگ Window اگش خة دهت کیذ، کذ كم داسای د تگ کلی هی ثبؽذ. یکی تگ

ب دس Window داسد. وبطس ک هجلا گلتن Window ثیبگش ایي اعت، ک ایي كبیل اؽبس ث یک آثزکت Window تگ

WPF ث هبذ Form ب دس WinApp هی ثبؽذ.

هی ثبؽذ ک رضء کتشل بی WPF داسد ک یکی اص پش کبسثشدتشیي آثزکت بی Grid اؽبس ث آثزکتی ث بم Grid تگ

Container اعت. ایي کتشل ث وشا کتشل بی دیگش ک و اص کلاعی ث بم panel اسث ثشی هی کذ، ظیل

Page 23: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

Layout ي کتشل ث وشا کتشل بی هشثه، دس ثخؼپزش بی ؽوب سا داسذ دس هسد ای (Layout) هشس ثذی

.هلقل فضجت خان کشد

:دس خو ال هطؼ کذ كم، دعتس صیش سا هؾبذ هی کیذ

:کذ

x:Class="WpfApplication1.Window1

هشاس WpfAplication1 ک دس كنبی بم Window1 ربسی، هشثه ث کلاط XAML ایي دعتس، ثیبگش ایي اعت ک كبیل

كم امبك کیذ، ثشای آى سیذادی )هخلا XAML ث كبیل Button گشكت اعت هی ثبؽذ. ث ػاى هخبل چبچ یک

Click) تؼشیق کیذ، کذ بی ایي سیذاد دسى کلاط Window1 دس دسى كنبی بم WpfApplication1 خاذ ثد. ایي

آؽب هی ASP.NET 2.0 ه ث هشاصی كشم، ثشای ثشبه یغبىع تؼشیق کلاط سثو دادى آى ث کذ بی هشث

گلت هی ؽد( دس آى رب ن اص تکیکی هؾبث ایي اعتلبد هی Code-Behind Class ثبؽذ. ) افطلاصب ث آى

.گشدد

XAML ایي همع ثبػج رذایی اعو کبسثشی هب اص هطن ثشبه هی ؽد. ػلا ثش ایي ؽوب هی تایذ، كبیل بی

سا ث فست پیب دس گبم صهبى ارشای ثشبه، كشاخای کشد تعو اى ب، اعو کبسثشی پزش هشثه سا ایزبد

.وبییذ

: صبل ث دخو کذ صیش ک دس هطؼ کذ كم هشاس گشكت اذ تر کیذ

:کذ

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

ؽبهل WPF هشثه ث XAML هؾـ هی کذ. دس اهغ ش عذ WPF ایي دخو، د كنبی بم کلی سا دس ثشبه بی

سا دس ثخؼ ثؼذی تمیش خاذ داد. XAML ایي د كنبی بم خاذ ثد. تمیضبت ثیؾتش دس هسد كنبی بم ب دس

.هی ثبؽذ WPF وچیي دس آى ثخؼ خایذ دیذ ک د كنبی بم كم ؽبهل چ ػبفشی دس

پزش هی ثبؽذ. ایي خبفیت هبذ Tilte تؼشیق ؽذ اعت. خبفیت ال هشثه Window دس بیت، ع خبفیت ثشای

خبفیت هشاس ثگیشد، ث اس دس كشم بی یذصی هی ثبؽذ. دس اهغ هتی ک ث ػاى هوذاس دس ایي Text خبفیت

.یذص، ؾبى داد خاذ ؽذ Taskbar هشاس داسد، دس minimize ػاى پزش وچیي دس صهبی ک پزش دس صبلت

.سا هؾخـ هی کذ Window دخبفیت ثؼذی ن ث تشتیت استلبع ػشك

XAML فضبی بم ب در

.دس ثخؼ هجل ثب د دعتس صیش آؽب ؽذیذ

:کذ

Page 24: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

تی ایي ثبیغ WPF هشثه ث XAML هی ثبؽذ ثبثشایي، ش عذ WPF داغتیذ ک آى ب كنبی بم بی اعبعی

.ث چ ضی هی ثبؽذ XAML د كنبی بم سا دس خد تؼشیق کذ. صبل ثجیین تؼشیق یک كنبی بم دس

: XAML اعلاى فضبی بم در

خد، تؼشیق کیذ. هبػذ ضی XAML هی تایذ كنبی بم بی هسد ظش سا دس اعبد xmlns ثب ث کبس ثشدى کلو

:هی ثبؽذ تؼشیق كنبی بم ب ث فست صیش

:کذ

xmlns="clr-namespace:[NameSpace Name];assembly=[Assembly Name]"

Assembly] ثبیغتی بم كنبی بم هشثط سا هشاس دیذ. ث ربی [NameSpace Name] دس تؼشیق كم، ث ربی

Name] ثبیغتی بم كبیل اعوجلی سا ک آى كنبی بم دس آى هشاس گشكت اعت سا هشاس دیذ. ثشای دسک ثتش همع ث

: هخبل صیش تر کیذ

ایزبد کشد ایذ ک ایي کلاط دس كنبی بم AdvanceMathClass ػاىكشك کیذ ک یک کلاط اختقبفی ثب

MathClasses دس اعوجلی MyCustomClasses هشاس داسذ. صبل ثشای دعتشعی ث کلاط AdvanceMathClass

.ثبیغتی كنبی بم آى سا یض اعوجلی ک آى کلاط دس آى هشاس گشكت اعت سا هؾخـ وبییذ

:خد امبك وبییذ XAML پیؾیي، ثبیغتی دعتس صیش سا دس اثتذای كبیلثب تر ث تمیضبت

:کذ

xmlns="clr-namespace:MathClasses;assembly=MyCustomClasses"

.خد اعتلبد کیذ XAML دس عذ AdvanceMathClass صبل هی تایذ ث ساصتی اص کلاط

:کت

كنبی بم بی هرد، یک اعن هغتؼبس هؼشكی کیذ اص اص آى اعن اگش ث خبهش داؽت ثبؽیذ، هی تاغتیذ ثشای

:دس ثشبه خد اعتلبد وبییذ. ث ػاى هخبل هی تایذ کذی ث فست صیش داؽت ثبؽیذ

:کذ

using sys=System;

ث ربی sys ص کلواتخبة کشد ایذ. صبل ث ساصتی هی تایذ ا System سا ثشای sys تعو ایي کذ، ؽوب بم هغتؼبس

.دس ثشبه خد اعتلبد کیذ ث كنبی بم ب کلاط بی داخلی آى دعتشعی داؽت ثبؽیذ Systsem کلو

:یض هی تایذ، ػولی هؾبث ث ایي سا ازبم دیذ. ث هطؼ کذ صیش تر کیذ XAML دس كبیل بی :کذ

Page 25: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

xmlns:cc="clr-namespace:MathClasses"

ث ػاى بم هغتؼبس ثشای كنبی بم هزکس، اعتلبد ؽذ اعت. صبل cc س ک هؾبذ هی کیذ، اص کلووبط

.هی تایذ تعو ایي کلو ث کلاط بی دسى كنبی بم خد دعتشعی داؽت ثبؽیذ

: فضبی بم بی اضبضی

دس ثشبه بی XAML كشك دس اعبدوبطس ک دس ثخؼ هجل یض یبد آس ؽذم، د كنبی بهی ک ث هس پیؼ

WPF رذ داسذ، ػجبستذ اص

:کذ

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

: ک دس صیش ث تمیش ش یک خان پشداخت

: xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation فضبی بم

کتشل بی ... ک رت ایزبد اعو بی کبسثشی، ث کبس WPF ایي كنبی بم، دس ثشگیشذ توبهی کلاط بی

.گشكت هی ؽذ، هی ثبؽذ

:xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml فضبی بم

هی ثبؽذ ک ث ؽوب اربص ظبست ثش تلیذ ؽجی عبصی اعبد XAML ایي كنبی بم دس اهغ ؽبهل ااع کبسثشدبی

XAML سا هی دذ. وبطس ک هؾبذ هی کیذ، ایي كنبی بم داسای پیؾذ x هی ثبؽذ. ایي ثذاى هؼی اعت

دسى ایي كنبی بم اعتلبد وبییذ، ثبیغتی کذی هؾبث کذ صیش ک ثخایذ اص ػبفش XAML ک دس ش ربیی اص عذ

:ثیغیذ

:کذ

<x:[ElementName]>

ػبفشی ک اص ایي كنبی بم هبثل دعتشعی خاذ ثد، ثغت ث ػقشی ک اص ایي كنبی بم اعتلبد هی کذ،

بیی ثشای کتشل ب هی ثبؽذ ک دسهتلبت هی ثبؽذ. ث ػاى هخبل یکی اص کبسثشد بی آى هشاس دادى ؽبع

localizable کشدى، ثشبه ب، وؼ اعبعی سا ثبصی خاذ کشد

(تنقطوت ف ) XAML ثخع دم : زثبى

: XAML خاؼ ریذاد ب در

Page 26: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

سا تمیش هی دادم، اؽبس ای ث ع خبفیت XAML اگش ث خبهش داؽت ثبؽیذ، دس صهبی ک عبختبس عبد یک عذ

Title ،Width Height اص کلاط Window کشدم اؽبس ؽذ ک ایي هوبدیش، خافی سا ثشای پزش ؽوب هؾخـ

.كشمهی کذ ک ث تشتیت ػجبست ثدذ اص ػاى كشم، ػشك استلبع

:، ث د فست هی تایذ خاؿ یک ػقشا سا هؾخـ کیذ XAML ث هس کلی دس اعبد

امبك کشدى خاؿ ػبفش دس تگ آؿبصیي کتشل هشثه هی ثبؽذ. هؼولا صهبی اص ایي سػ اعتلبد : رظ ال

:یش تر کیذهی کین ک ثتاى هوبدیش خ.اؿ سا ث ساصتی تظین کشد. ث ػاى هخبل ث کذ ص

:کذ

<TextBox Name="txtNum1" HorizontalAlignment="Center" VerticalAlignment=

"Center" Background="Green" Foreground="White">this is sample

TextBox</TextBox>

ػاى پظ صهی سگ تؼشیق هی کذ تؼذای خاؿ آى سا اص رول سگی ث TextBox کذ كم، یک و اص آثزکت

پیؼ صهی .. سا هؾخـ هی کذ.) گشاى کذ بی ؽت ؽذ جبؽیذ، ث صدی هؼبی توبهی آى ب سا هتر

(.خایذ ؽذ

پزش ای ک كوو ؽبهل کتشل كم ثبؽذ، ظبشی ؽجی ثب ظبش ؽکل صیش خاذ داؽت

Page 27: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

امبك کشدى خاؿ کتشل ث فست تگ بی داخلی، ثیي تگ آؿبصیي پبیبی کتشل هسد ظش هی :رظ دم

:ثبؽذ. ث ػام هخبل هی تاى هطؼ کذ كم سا ث فست صیش ؽت

:کذ

<TextBox>

<TextBox.Name>txtNum1</TextBox.Name>

<TextBox.HorizontalAlignment>Center</TextBox.HorizontalAlignmen

<TextBox.VerticalAlignment>Center</TextBox.VerticalAlignment>

<TextBox.Background>Green</TextBox.Background>

<TextBox.Foreground>White</TextBox.Foreground>

<TextBox.Text>this is sample TextBox

</TextBox.Text>

</TextBox>

ارشای کذ كم، ثب کذ هجل اص آى یکغبى هی ثبؽذ. صبل هوکي اعت ک ایي عال ثشایتبى پیؼ آیذ ک صبلت دم یبص

ث کذیغی ثیؾتشی داسد. پظ چ یبص اعت ک کذ ال سا ث ایي ؽکل ثیغین؟

پیؾتشكت ثشای یک خبفیت، دس تگ دس راة ایي عال ثبیذ ثگین ک، ثغیبسی اص هاهغ، تظین هوبدیش پیچیذ

كم سا ثب تـییش خبفیت TextBox آؿبصیي عخت گبب ؿیش هوکي اعت. ث ػاى هخبل كشك کیذ ک ثخایذ ظبش

BackGround ForeGround آى کوی تـییش ثذیذ. ث هطؼ کذ صیش دهت کیذ :

:کذ

<TextBox ... >

...

<TextBox.Background>

<RadialGradientBrush >

<RadialGradientBrush.GradientStops>

<GradientStop Color="#b1a4fb" Offset="0"/>

<GradientStop Color="Lime" Offset=".5"/>

<GradientStop Color="#a30c85" Offset="1"/>

</RadialGradientBrush.GradientStops>

</RadialGradientBrush>

</TextBox.Background>

...

Page 28: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</TextBox>

تـییش پیذا کشد، یض اكکتی ث آى امبك ؽذ اعت. وبطس ک هؾبد هی BackGround دس ایي کذ، خبفیت

ذ کذ هجل تب ؽبهل یک سگ وی ثبؽذ، ثلک یک ؽی گشادیبى هی دس ایي کذ، هب BackGround کیذ، خبفیت

ثبؽذ ک خد یض ؽبهل خاؿ ثغیبس صیبدی هی ثبؽذ. پظ دس ایي صبلت وی تاى ایي خبفیت سا دس تگ آؿبصیي هشاس

.داد

(دس ثخؼ بی آتی ثب کذ بی كم ض ػولکشد آى ب ثیؾتش آؽب خایذؽذ)

.ایي کذ، هؾبث صیش خاذ ثدؽکل صبفل اص ارشای

Attached Properties) خاؼ پیضت غذ

ش کتشلی ػلا ثش خافی ک خدػ داسا هی ثبؽذ، ثش اعبط ض هشاس گیشی آى ثش سی کتشل گذاسذ خدػ

ؽد.( خاؿ رذیذی ث آى گلت هی Container )کتشلی ک ایي کتشل سا دس ثش گشكت اعت ک افلاصب ث آى کتشل

امبك هی گشدد ک ث ایي خاؿ، خاؿ پیعت ؽذ هی گیذ. ث ایي دلیل ایي بم ثشای آى اتخبة ؽذ اعت

ک ایي خاؿ دس صبلت ػبدی ثشای کتشل هزد یغتذ ثغت ث کتشل گذاسذ آى، ایي خاؿ امبك هی ؽذ.

) Container ک یکی اص کتشل بی Grid کذ اى سا ثب ن دیذین، ثش سی کتشلكم ک TextBox ث ػاى هخبل، اگش

امبك TextBox ث کتشل Grid ثش سی TextBox دس اهغ هوتشیي پش کبسثشد تشیي( هی ثبؽذ، خافی رت تظین

: هی گشدد. ض اعتلبد اص ایي خاؿ ث فست صیش هی ثبؽذ

:کذ

DefiningName.PropertyName ="Value";

Page 29: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

دس عطش عتى دم کتشل گشیذ، هشاس TextBoxهجل، TextBox ث ػاى هخبل ثب امبك کشدى کذ صیش ث کذ بی

.خاذ گشكت

:کذ

<TextBox ... Grid.Row="1" Grid.Column="1">

...

...

</TextBox>

__________________

: XAML ریذاد ب در

تویذات خثی ثشای تؼشیق اعتلبد اص سیذاد بی هختلق کتشل ب كشان کشد اعت. ض XAMLخؽجختب،

:ث فست صیش هی ثبؽذ XAML تؼشیق یک سیذاد دس اعبد

:کذ

EeventName="MethodName"

:ث ػاى هخبل دس هطؼ کذ صیش سیذاد کلیک ثشای یک دکو تؼشیق ؽذ اعت

:کذ

<Button Name="testButton" Content="Click To Perform"

Click="testButton_Click"></Button>

، ؽوذ ثدى آى هی ثبؽذ. ث ػاى هخبل دس XAML وبطس ک هجلا یض اؽبس ؽذ، یکی اص ثضسگتشیي هبثلیت بی

تؼشیق ؽذ ثشای کتشل بی هجلی سا ک ث فست اتهبتیک، لیغت توبهی سیذاد بی XAMLگبم تؼشیق سیذاد،

هبثل ثبیذ ؽذى، ثشای کتشل رذیذ، ثبؽذ سا ث فست لیغت ؽذ دس اختیبس ؽوب هشاس هی دذ. دس تیز ث ساصتی

.هی تایذ، چذیي کتشل سا ث یک سیذاد، ثبیذ کیذ

هرد اعت، ک <New Event Handler> ػاىػلا ثش لیغت سیذاد بی اص هجل تؼشیق ؽذ، گضی دیگشی یض ثب

.ثب اتخبة آى هی تایذ، یک سیذاد رذیذ ثشای کتشل هسد ظش ایزبد کیذ

: ثشای دسک ثتش ایي همع ث ؽکل صیش دهت کیذ

Page 30: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ی دس گبم تؼشیق سیذاد، ثشای دکو هجل ثبص ؽذ اعت. اهب ث دلیل وبطس ک هؾبذ هی کیذ، لیغت کؾی

ثبؽذ، تب گضی هرد، تؼشیق یک Button ایک هجلا یچ سیذادی تؼشیق ؾذ اعت، ک هبثل ثبیذ ؽذى ث کتشل

كؾشدى کلیذاهکبى پزیش هی ثبؽذ. ث هضل <New Event handler> سیذاد رذیذ هی ثبؽذ ک ثب اتخبة گضی

Enter ثش سی ایي گضی، یک سیذاد دس کلاط هشثه عبخت هی ؽد.

، یک سیذاد کلیک تؼشیق کیذ، ثب لیغتی ک دس ؽکل صیش ؾبى داد ؽذ اعت، Button صبل اگش ثخایذ، ثشای یک

.هار خایذ ؽذ

button وبطس ک هی ثییذ، ث لیغت هجلی یک گضی دیگش امبك ؽذ اعت، ک دس اهغ سیذاد تؼضیق ؽذ ثشای

:ثبؽذ. دس ایي صبلت، ؽوب د اتخبة هی تایذ ازبم دیذ كجل هی

سا اتخبة کیذ، ک دس ایي فست، سیذاد رذیذی، فشف ظش <New Event handler> گضی ال، یؼی : اتخبة ال

.اص کلی سیذاد بی هجلی ثشای دکو دم ایزبد هی ؽد

، دکو دم سا یض ث سیذاد کلیک دکو ال ثبیذ کیذ. textButton_Click ثب اتخبة گضی دم، یؼی : اتخبة دم

.ک دس ایي فست سیذاد رذیذی ثشای دکو دم ایزبد خاذ ؽذ

: کت

آى تؼشیق ؽذ ثشای سكتي ث سیذاد تؼشیق ؽذ هرد، د سا رد داسد. یب ایک ث کلاط هشثه ک سیذاد، دس

اعت ثشیذ، سیذاد هسد ظش سا رت کذ یغی پیذا کیذ. سا دم، ساعت کلیک کشدى ثش سی بم هتذ هؾخـ

هی ثبؽذ. ایي همع دس ؽکل صیش وبیؼ داد Navigate To Event handler ؽذ ثشای سیذاد، اتخبة گضی

ؽذ اعت

Page 31: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

*******************

سا كشا، گشكتیذ. اص پغت ثؼذی WPF ثب اتوبم ؽذى ایي پغت، هوذهبت لاصم ثشای ؽشع کبس ثشبه یغی ثب

هی WPF ک اص الیي افلی تشیي وچیي هوتشیي هلبین (Layout) اؾبءالله، ثب ؽشع اص هجضج هشس ثذی

.سا آؿبص خاین کشد WPF ثبؽذ، ثشبه یغی ثب

***********

چبچ هی خایذ و کذ بیی سا ک اص هغوت بی ثؼذی اسائ هیؾذ سا ثش سی کبهپیتش خد ارشا کیذ

.خدتبى قت کشد ایذ، قت کیذ PC سا چبچ ص ثش سی 2008تیز سا هؾبذ کیذ، یژال اعتدی

ک دس ایي تکلژی ثغیبس هسد اعتلبد هشاس XAML صثبى WPF دس ثخؼ بی هجلی، هوذهبتی دس هسد تکلژی

سا رت چیذهبى Container هی گیشد، فضجت کشدم. دس ایي ثخؼ ثخؼ بی ثؼذی، ض اعتلبد اص کتشل بی

.عبیش کتشل ب ثش سی پزش ب هسد ثشسعی هشاس خان داد

.خاین داؽت 2008دس هضیو یژال اعتدی WPF اهب هجل اص آى گبی گزسا ث ض ایزبد یک ثشبه

: WPF ایجبد ثربه بی

هی ثبؽذ ک هجلا یض ثغیبس اص آى اعتلبد کشد WinApp دهیوب هبذ ض ایزبد پشژ بی WPF ض ایزبد یک پشژ

.ایذ. تب رکش چذ کت مشسی هی ثبؽذ ک دس اداه خاین دیذ

ثشیذ. ایي پزش سا ث سػ ب هختللی هی تایذ ثبص New Project ثبیغتی ث پزش WPF پشژاثتذا ثشای ایزبد یک

.(کیذ ) ک صتوب ثب آى ب آؽبیی داسیذ

: ایي پزش سا دس ؽکل صیش هؾبذ هی کیذ

Page 32: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

هرد هی ثبؽذ. الیي هبلت WPF وبس ک دس ؽکل ؾبى داد ؽذ اعت، د هبلت کلی ثشای ایزبد ثشبه بی

WPF Browser هی ثبؽذ. ک همع افلی هب یض ویي گضی اعت. دیگشی گضی WPF Application گضی

Application هی ثبؽذ. دس اداه تمیضبت هختقشی دس هسد ش یک اص ایي د هبلت ثشبه یغی WPF .خان داد

تایذ غخ دات ت كشین سک هبثل تر اعت، ایي اعت ک ؽوب هی 2008کت دیگشی ک دس یژال اعتدی

( Multi targeting خد سا اتخبة کیذ، ثشبه خد سا ثش هجن آى غخ پیبد عبصی کیذ. ) ث ایي هبثلیت افطلاصب

.هی گیذ

: WPF Application قبلت

داسد. دس ػیي صبل یض تلبت WinApp ، ؽجبت ثغیبس صیبدی ثب هذل ثشبه یغی WPF ایي هذل اص ثشبه یغی

بی ثغیبسی ثب آى یض داسد ک هوتشیي تلبت ثیي آى ب، کتشلی اعت ک ث ػاى پذس توبهی کتشل بی دیگش

Form ی ثبیغتی، ثش سی آثزکتی اص کلاعی ث بمتوبهی کتشل ب WinApp ؽبخت هی ؽد. دس ثشبه یغی

WPF هی ثبؽذ. صهبی ک یک پشژ Window ایي کتشل، آثزکتی اص کلاط WPF هشاس ثگیشذ. دس صبلی ک دس

Application ایزبد هی کیذ، یک آثزکت اص کلاط Window عبخت هی ؽد ک ث فست پیؼ كشك بم آى

Window1 هی ثبؽذ. ش کلاط Window داسای د صبلت هغوت هزضا هی ثبؽذ. هغوتی هشثه ث کذ یغی

Page 33: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

XAML ثشبه هی ثبؽذ، ک دس ایي هغوت دعتسات Design ایزبد هطن بی ثشبه ؽوب، هغوت دیگش هشثه ث

WPF پشژسا هی تایذ هؾبذ کیذ اهذام ث هشاصی ثشبه خد وبییذ. ؽکل صیش تیز صبفل اص ایزبد یک

Application سا ؾبى هی دذ.

ث رد اهذ اعت. ثخؼ بی هختلق سی ػکظ هؾخـ ؽذ Window وبطس ک هؾبذ هی ؽد، یک

ث رد اهذ اعت ک ثب هؾبذ آى، خدتبى هتر تـییشا Toolbox Properties اعت. تـییشاتی دس د پزش

.تخایذ ؽذ

Toolbox ب پشژ خدتبى، ث عشاؽ پزش بیدسفذ صهبى کبس ث 90کت ای ک هن اعت ایي اعت ک دس ثیؼ اص

Properties توشیجب ػکظ ایي همع ثد( ایي همع ث ایي دلیل اعت ک توشیجب 2.0دس دات ت ) .خایذ رفت

فست هی گیشد. اص ایزبد آثزکت ب، تظین XAML توبهی کبسب دس پشژ ؽوب ثب ؽتي دعتسات کذ ب دس هغوت

ثبػج فشك ریی دس هت خاذ Properties یذاد ب .... ) الجت دس ثؼنی هساد ن اعتلبد اص پزشخاؿ، س

.(ؽذ

Page 34: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: WPF Browser Application قبلت

ایي هبلت ک یک رج رذیذی اص ثشبه یغی سا پیؼ سی ؽوب هشاس هی دذ، ؽجبت صیبدی ث ثشبه بی تضت

، Window ایي اعت، ک دس ایي صبلت کتشل هبدس، ث ربی WPF Application آى ثب هذل ة داسد. ثضسگتشیي تلبت

IE اسث ثشی هی کذ. ایي ع ثشبه ب، هغتویوب تعو هشسگشبی ة اص رول Page آثزکتی اعت ک اص کلاط

Fire Fox هبثل ارشا ؽذى غتذ. الجت هضذدیت بیی دس ث کبس گیشی رج بیی اص WPF .دس ایي هذل، رد داسد

.ث ػاى هخبل ثغیبسی اص اكکت بی گشاكیکی سا وی تاى دس ایي سػ ث کبس ثشد

------------------------------

: تؾی

اص لضبظ WPF 3.5 اص دات ت كشین سک سا اتخبة کیذ. ث دلیل ایک 3.5ویؾ دس گبم ایزبد پشژ ب، غخ

.ثتش ؽذ اعت WPF 3.0 ی غجت ثکبسای

---------------------------

: کت

.اص كشم بی یذصی عبثن یض اعتلبد کیذ WPF وچبى هی تایذ دس ثشبه بی

-----------------------

: APP کلاش

هی ثبؽذ ک اص کلاط APP صتوب یک و اص آى سا داسا هی ثبؽذ، کلاط WPF کلاط دیگشی ک ش پشژ

Application اسث ثشی هی کذ. ایي کلاط یض داسای ثخؾی کذ ث فست XAML هی ثبؽذ ک دس صیش هؾبذ هی

: کیذ

:کذ

<Application x:Class="WpfApplication1.App"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

StartupUri="Window1.xaml">

<Application.Resources>

</Application.Resources>

</Application>

سا ث ػاى کلاعی ک کذ App ایزبد ؽذ اعت ک کلاط Application وبطس ک هی ثییذ، آثزکتی اص کلاط

بی آى دس آى رب هشاس داسد، هؼشكی کشد اعت. د آیتوی ک دس کذ كم رذیذ غتذ ػجبستذ اص

. Resources تگ StartupUri خبفیت

، بم کلاعی سا هؾخـ هی کذ ک ث ػاى الیي پزش ثشبه یب وبى پزش افلی ثشبه StartupUri خبفیت

Page 35: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.وبیؼ داد خاذ ؽذ

ک هی تاذ ثب خیلی اص کتشل بی ث کبس سد، هبثغ ثشبه ؽوب سا هؾخـ هی کذ. چبچ ایي Resources تگ

ث فستی ک دس کذ كم هؾبذ هی کیذ، تؼشیق ؽد، هبثؼی ک دس آى تؼشیق هی Application تگ دس کلاط

.ژ هبثل اعتلبد هی ثبؽذؽذ ث ػاى هبثغ کل پشژ هی ثبؽذ ک دس و ربی پش

ایزبد کین، هی تاى گلت ک کلاط 2.0اگش ثخاین، تبعجی ثیي ایي کلاط کلاعی دس دات ت كشین سک

Application دس WPF ػولکشدی هبذ کلاط Program دس ثشبه بی WinApp داسد. وچیي دعتس StartupUri

.هی ثبؽذ Program س کلاطد Application.Run چیضی ؽجی ث دعتس

( ثخع ضم: چیذهبى طراحی کترل ب ) قطوت دم

: WPF چیذهبى عبؾر در

آؽب ؽذیذ. دس ایي ثخؼ ث کتشل 2008دس ثخؼ هجلی، ثب هوذهبت هضیو هشاصی کذ یغی یژال اعتدی

ش بی کبتیش ) کتشل بیی ک هی تاذ کتشل بی دیگش، ؽبهل و کتشل بی یژال یض کتشل بی کبتی

.دیگش سا دس ثشگیشذ( هی پشداصین

هضغة هی ؽذ. ایي کتشل ب، اهکبت هتؼذدی سا دس اختیبس WPF کتشل بی کبتیش اعبط ثشبه یغی دس

.ؽوب هشاس هی دذ ک ثتایذ کتشل بی خد سا ث فست فضیش ثش سی كشم خد هشاسدیذ

سد ک ش یک ث ػی اهکببت خبفی سا ثشای چیذهبى کتشل بی ؽوب کتشل بی کبتیش هتؼذدی رد دا WPF دس

هی تایذ، کتشل بی خد سا ث فست StackPanel ایزبد هی کذ. ث ػاى هخبل تعو کتشل کبتیشی ث بم

لل بیی دس ث ؽوب اربص هشاس دادى تظین کتشل ب سا دس ع Grid پؾت ای هشاسدیذ. وچیي کتشلی ث بم

عطش ب عتى بیی ک ؽوب تؼییي هی کیذ، سا هی دذ. اهب هجل اص اسد ؽذى ث ثضج کتشل بی کبتیش

هؼشكی اى ب خاؿ اهکببتی ک ثشای ؽوب كشان هی کذ، ثتش اعت گبی ث پبی اعبط هبلت ثذی یب

.بی هجلی دات ت كشین سک ثیبذاصین تلبت آى ثب غخ WPF دس (Layout) هشس ثذی

: WPF فلطف چیذهبى قبلت ثذی در

Anchor ( ، د خبفیتی ک دس چیذهبى ػبفش ثش سی كشم ب، هحش ثدذ، خاؿ1.0 1.1) x.1دس دات ت كشین سک

Dock ین کیذ، ک دس فست ثدذ. تعو ایي د خبفیت هی تاغتیذ، کتشل ب سا ثش سی كشم خد، چبى تظ

تـییش عبیض كشم، کتشل ب یض ث تبعت اى تـییش عبیض ثذذ یب هضل هشاس گیشی آ ب ث فست پیب تـییش کیذ. اهب ثبص

ن ایي خاؿ راة گی یبص بی ؽوب ث فست کبهل جدذ. ث یژ صهبی ک کتشل بی خد سا ث فست پیب

شبه ایزبد هی کشدیذ، ایي هغئل ثیؾتش ثبػج ػزاة سزؼ ثد. ث فستی ک گبب یبص ث کذ دس صهبى ارشای ث

.یغی بی ثغیبسی ثشای چیذهبى کتشل ب ثش سی كشم ثد

ػبفش دیگشی امبك ؽذذ ک هی تاغتذ، چیذهبى ػبفش سا تب صذی، کتشل وبیذ. یکی 2.0دسدات ت كشین سک

ثد )اعت(. اهبایي کتشل ب یض هبثلیت ب کبسایی ثغیبس خثی سا هیب FlowLayoutPanel شل ب، کتشلاص ایي کت

ؽذ ثدى دس اهغ رضء 2.0وی کشدذ. دلیل دیگش آى ایي ثد ک ایي کتشل ب ث فست یک اكض اسد دات ت

ثشای آى ب ث ؽوبس هی آیذ. هبذ کتشل بی غت افلی كشم بی یذصی یغتذ ث اهغ یک اكض

ثغیبسی ک ؽشکت بی حبلج ؽت اذ هی یغذ. ػلا ثش ایي، اعبط ایي کتشل ب یض ثش پبی هکبى هشاس

Page 36: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.گشكتي کتشل ب هی ثبؽذ ک ایي خد یض ث ػی هضذدیت هضغة هی ؽد

ؽوب كشان هی کذ ک ث ؽوب اربص ایزبد ثشبه بیی سا هی دذ عیغتن رذیذی سا اص پبی ثشای WPF تکلژی

ک اثغت ث عبیض یب سصلؽي فلض وبیؼ جبؽذ. وبطس ک هجلا یض گلت ؽذ، تؼییي عبیض هضل هشاس گیشی

بپزیش کتشل ب ث فست هؾخـ حبثت، کبسایی ثشبه سا ث ؽذت کبؼ هی دذ.) الجت دس هاسدی ارتبة

اعتلبد هی کیذ، بچبس غتیذ ک هضل هشاس گیشی کتشل بی سی آى سا Canvas اعت. ث ػاى هخبل صهبی ک اص

. (فشاصتب تؼییي کیذ

ثشای ایک ثتاى ثش هضل هشاسگیشی اذاص کتشل ب ظبست کبهل داعت، اعتلبد کشدى اص کتشل بیی WPF سا صل

.ایزبد ؽذ اذاعت ک ثذیي هظش

:رد داسد ک تیتش اس ثیبى هی ؽذ WPF چذ کت افلی هن دس پؾت هلم كلغل چیذهبى هبلت ثذی دس

(عبیض ػبفش جبیغتی فشاصتب تؼییي گشدد ) تب ربی ک اهکبى پزیش ثبؽذ ( الف

ؼ تؼییي گشدد) تب ربیی ک هوکي هضل هشاس گیشی ػبفش جبیذ ث فست دعتی غجت ث گؽ فلض وبی (ة

(ثبؽذ

یب ثیؼ اص 1، 0کتشل بی کبتیش، هی تاذ ث فست داخلی هشاس ثگیشذ.) ش کتشل کبتیش هی تاذ ؽبهل (ج

(یک کتشل کبتیش دیگش ثبؽذ

توغین ثذی هی ( Children Elements) کل كنبی هرد یک کتشل کبتیش ثیي توبهی کتشل بی دسی آى(د

ؽد. ایي توغین ثذی ثش اعبط یبص ش کتشل ث كنبیی ک یبص داسد تؼییي هی گشدد هی تاذ ث فست پیب تـییش

.کذ

( Container Controls) کترل بی کبتیر

اسث ثشی هی Panel اص کتشل پبی ای ث بم WPF وبطس ک هجلا یض اؽبس ؽذ، توبهی کتشل بی هبلت ثذی

.ختن هی ؽد Dispatcher Object کذ. ایي کتشل یض هی اسث ثشی بیی ث آثزکت

:ػجبستذ اص WPF کتشل بی اعبعی کبتیش دس

Stack Panel (الف

Canvas (ة

Dockpanel (ج

WrapPanel (د

) UniformGrid

Grid (ی

ک دس صیش تمیش هختقشی دس هسد ش یک داد ؽذ اعت. دس اداه ث فست هلقل ث ثشسعی شیک اص ایي

. ػبفش ثب رکش هختبل بیی خان پشداخت

Page 37: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: StackPanel کترل

وبطس ک اص بم آى هؾخـ اعت، ایي کتشل, ػبفش سا ث فست پؾت ای هشتت هی کذ. ث د فست اكوی

.دی هی تایذ کتشل ب سا هشاسد یذػو

ا : Canvas کترل

یي کتشل اربص هشاس گشكتي کتشل ب سا دس هکبى هؾخـ حبثتی هی دذ. پظ اص هشاس گشكتي ػبفش ثش سی ایي

.کتشل، هکبى اى ب ثشای ویؾ حجت هی هبذ

: DockPanel کترل

سا داسد. ثب ایي کتشل هی تایذ، 2.0س کتشل بی دات ت كشین سکد Dock ایي کتشل ػولکشدی ؽجی ث خبفیت

.ػبفش خد سا غجت ث لج بی هختلق آى تظین وبییذ

: WrapPanel کترل

ایي کتشل، ػبفش سا ث فست عطشی عتی تب ربیی ک اهکبى داؽت ثبؽذ، هشاس هی دیذ. دس صبلت عطشی،

اذ دس یک عطش هشاس هی گیشذ. اگش كنبی هسد یبص کتشل ب اص كنبی هرد دس یک عطش کتشل ب تب ربیی ک ثت

ثیؾتش ثبؽذ، ثوی کتشل ب ث عطش ثؼذی هتول هی ؽذ. دس صبلت عتی یض ػولی هؾبث، لی دس هسد

.عتى ب ازبم هیگیشد

: UniformGrid کترل

.ذ. ثب ایي تلبت ک دس ایي کتشل، عبیض توبهی علل ب یکغبى هی ثبؽذهیجبؽ Grid ایي کتشل ؽجی ث کتشل

: Grid کترل

ایي کتشل، اص پشکبسثشد تشیي کتشل بی کبتیش هی ثبؽذ. ایي کتشل ثب ایزبد عطش ب عتى بیی ث ؽوب اهکبى

هشاس دادى ػبفش خد سا دس علل هؾخقی اص اى هی دذ. ایي کتشل

.هی ثبؽذ 2.0دس دات ت كشین سک TableLayoutPanel کتشل ؽجی ث

: StackPanel کترل

ایي کتشل هشاس گشكت اذ سا ثش اعبط رتی ک ؽوب Children ایي کتشل، ػبفش داخل خدػ سا ک دس خبفیت

.پؾت ای هشتت هی کذهؾخـ هی کیذ ) اكوی یب ػودی( ث فست

:ث فست صیش هی ثبؽذ StackPanel ض تؼشیق

:کذ

<StackPanel>

<!-- Some Controls Goes Here-->

</StackPanel>

Page 38: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.هشاس هی دذ StackPanel ثش سی Button یک کتشل TextBox ث ػاى هخبل کذ صیش، ع کتشل

:کذ

<StackPanel>

<TextBox Margin="3" Name="txtNum1"></TextBox>

<TextBox Margin="3" Name="txtNum2"></TextBox>

<Button Margin="3" Name="btnSum" Click="btnSum_Click">Get

Sum</Button>

<TextBox Margin="3" Name="txtResult"></TextBox>

</StackPanel>

:ؽکل صبفل اص دعتسات كم، هؾبث صیش خاذ ثد

هبثلیت چیذى ػبفش سا ث فستی اكوی یض داسا هی ثبؽذ. ثب ث کبس گیشی StackPanel وبطس ک اؽبس ؽذ، کتشل

.یذ، ض هشاس گیشی ػبفش سا هؾخـ عبصیذاص ایي کتشل هی تا Orientation خبفیت

هی ثبؽذ. ک ث تشتیت ثشای تشاص کشدى ػبفش ث فست اكوی Horizontal Vertical ایي صبفیت داسای د هوذاس

.ث کبس هی سد StackPanel ػودی ثش سی

: ث ػاى هخبل دس کذصیش، چبس دکو ث فست اكوی هشاس گشكت اذ

Page 39: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:کذ

<StackPanel Margin="5" Orientation="Horizontal" Button.Click="ButtonClick" >

<Button>First Button</Button>

<Button>Second Button</Button>

<Button>Third Button</Button>

<Button>fourth Button</Button>

</StackPanel>

هشاس گشكت اعت Horizontal ثش سی StackPanel دس تگ آؿبصیي کشل Orientation دس ایي کذ، خبفیت

: کت

سا ثشای Orientation هی ثبؽذ. دس اهغ اگش خبعیت Vertical ثشاثش ثب Orientation هوذاس پیؼ كشك خبفیت

StackPanel تظین کیذ، ػبفش ث فست پؾت ػودی هشاس خاذ گشكت

ش کتشلی ػلا ثش خاؿ هخقفی ث خدػ داسای خافی هی ثبؽذ ک توشیجب ثیي و کتشل ب هؾتشک

، اى خاؿ سا ؽبهل هی ؽذ. ایي خاؿ دس WPF رد داسد ک اکخش کتشل بی WPF غتذ. دس اهغ خافی دس

.کتشلی ػولکشدی هؾبث خاذ داؽت. دس ثخؼ ثؼذی ث تؼذادی اص ایي خاؿ اؽبس خاین کشدش

و کذ بی ؽت ؽذ دس ایي پغت پغت هجلی دس هبلت یک پشژ دس آخش ویي ) StackPanel داه کتشلا

( .تبپیک پیعت ؽذ اعت

--------------------------------

Page 40: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: اؼ تراز ثذیخ

ک دس هاسد هتؼذدی اعتلبد هی گشدذ، هضل هشاس گیشی HorizontalAlignment VerticalAlignment د خبفیت

.اكوی ػودی کتشل سا غجت ث کتشل کبتیش خدػ هؾخـ هی کذ

: HorizontalAlignment خبؾیت

: ػجبستذ اص HorizontalAlignment هوبدسیش خبفیت

Left : ایي هوذاس، ثبػج هی ؽد ک کتشل هسد ظش اص عوت چپ کتشل پذسػ تشاص ؽد.

Right : ایي هوذاس، ثبػج هی ؽد ک کتشل هسد ظش اص عوت صاعت کتشل پذسػ تشاص ؽد.

Center : ایي هوذاس، ثبػج هی ؽد ک کتشل هسد ظش دس هغوت عو کتشل پذسػ تشاص ؽد.

Stretch : ایي هوذاس ثبػج هی ؽد ک کتشل توبهی ػشك کتشل پذسػ سا پؽؼ دذ.

:ػکظ صیش، هاسد گلت ؽذ سا ؾبى هی دذ

::کذی ک ثشای ثشبه كم ؽت ؽذ اعت

:کذ

<Window x:Class="StackPanel.HAlignment"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="HAlignment" Height="300" Width="300">

<StackPanel>

<TextBox HorizontalAlignment="Left"

Name="txtNum1">HorizontalAlignment="Left"</TextBox>

<TextBox HorizontalAlignment="Right"

Name="txtNum2">HorizontalAlignment="Right"</TextBox>

Page 41: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<Button HorizontalAlignment="Center" Name="btnSum"

Click="btnSum_Click">Get Sum(HorizontalAlignment="Center")</Button>

<TextBox Name="txtResult">HorizontalAlignment="Stretch"</TextBox>

</StackPanel>

</Window>

: VerticalAlignment خبؾیت

: ایي خبفیت داسای چبس هوذاس صیش هی ثبؽذ

Top: ک ثبػج هی ؽد کتشل اص عوت ثبلای کتشل پذس خیؼ تشاص ؽد.

Bottom : ثبػج هی ؽد کتشل اص عوت پبییي کتشل پذس خیؼ تشاص ؽد ک

Center: ک ثبػج هی ؽد کتشل دسعو کتشل پذس خیؼ تشاص ؽد.

Stretch: ک ثبػج هی ؽد، کتشل اص توبهی كنبی هرد، اعتلبد کذ.

: کت

ص داسذ، كنب اختقبؿ هی دذ. ث ویي ، ث کتشل بی كشصذ خد ث وبى هوذاس كنب ک یب StackPanel کتشل

سا ثب ؽکل كم ث کبس ثجشیذ، تبحیشی دس چیذهبى کتشل ب VerticalAlignment دلیل اگش دعتسات هشثو خبفیت

.خاذ داؽت

-----------------------------

:Margin خبؾیت

ایي خبفیت، كبفل کتشل سا اص کتشل بی اهشاف خدػ هؾخـ هی کذ . ایي خبفیت داسای چبس هوذاس

Left،Top،Bottom Right هی ثبؽذ.

: ث فست صیش هی ثبؽذ XAML ض هوذاس دی ایي خبفیت دس اعبد

:کذ

<ElementName ... Margin="5,5,5,5"></ElementName>

اصذ ثب کتشل بی 5هؾخـ ؽذ اعت، اص ش هشف ث هوذاس Margin ک ثشای آى خبفیت ثب کذ كم، ػقشی

.اهشاكؼ كبفل خاذ دؽت

: کت

اگش هوبدیش كبفل ای ک هی خایذ هشاس دیذ ثشای ش چبس هشف یکغبى ثبؽذ، کبكی اعت ث ربی کذ كم اص کذ

:صیش اعتلبد کیذ :کذ

<ElementName ... Margin="5 "></ElementName>

Page 42: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

د هطؼ کذ كم یکغبى هی ثبؽذ. دس اهغ هی تایذ تب ثب هشاس دادى یک، ش چبس هوذاس ایي خبفیت سا هوذاس

.دی کیذ

: ؽکل صیش، و ای اص ض اعتلبد اص ایي خبفیت سا هؾخـ هی کذ

: کذ هشثه ث ؽکل كم :کذ

<StackPanel>

<TextBox HorizontalAlignment="Left" Margin="5"

Name="txtNum1">Margin="5,5,5,5"</TextBox>

<TextBox HorizontalAlignment="Right" Margin="5,10,0,25"

Name="txtNum2">Margin="5,10,0,25"</TextBox>

<Button HorizontalAlignment="Center" Margin="10,0,0,30"

Name="btnSum" Click="btnSum_Click">Margin="10,0,0,30"</Button>

<TextBox Name="txtResult" Margin="0,50,0,0"

>Margin="0,50,0,0"</TextBox>

</StackPanel>

------------------------------

: خاؼ ضبیس

: ؽؼ خبفیت صیش ثشای تظین عبیض کتشل ب ث کبس هی سذ

.ایي خبفیت، ػشك کتشل سا ث فست فشیش هؾخـ هی کذ : Width خبؾیت

Page 43: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.ایي خبفیت ث فست فشیش، هوذاس استلبع کتشل سا هؾخـ هی کذ : Height خبؾیت

.ایي خبفیت هییون استلبػی سا ک یک کتشل هی تاذ اختیبس کذ سا هؾخـ هی کذ :MinHeight خبؾیت

.ایي خبفیت هییون ػشمی سا ک یک کتشل ثبیذ داؽت ثبؽذ سا هؾخـ هی کذ :MinWidth خبؾیت

.ایي خبفیت هبکضیون استلبػی سا ک یک کتشل هی تاذ اختیبس کذ سا هؾخـ هی کذ :MaxHeight خبؾیت

.ایي خبفیت هبکضیون ػشمی سا ک یک کتشل ثبیذ داؽت ثبؽذ سا هؾخـ هی کذ :MaxWidth خبؾیت

: کت

ذاس دی ػشك ثشای هو Width Height وبس ک گلت ؽذ، تب ربیی ک اهکبى پزیش اعت، جبیغتی اص خاؿ

استلبع کتشل ب اعتلبد کشد. یکی اص هاسدی ک ایي همع هی تاذ کبسایی ثشبه سا پبییي آسد، صهبی اعت ک

.کیذ Localizable ثخایذ ثشبه خد سا

(و ثشبه سا اص پبیبى ویي پغت دالد کیذ ) : Canvas کترل

شل بی کبتیشی هی ثبؽذ ک ػبفش هختلق هی تاذ ثش سی آى هشاس ثگیشذ. اص ایي ایي کتشل یض یکی دیگش اص کت

کتشل ث ذست دس ثشبه ب اعتلبد هی ؽد. ث ایي دلیل ک ایي کتشل، ػبفش داخلی خد سا ثش هجبی هکبى آى

ویي دلیل دس هاهؼی ک ػقش ک ث فست فشیش دس خاؿ آى ػقش رکش گشدیذ اعت، تشاص ثذی هی کذ. ث

اهکبى تـییش عبیض پزشب هوبدیش ػبفش دس صهبى ارشای ثشبه ثبؽذ، اعتلبد اص ایي کتشل، اتخبة هبعجی وی

.تاذ ثبؽذ

هجلا اؽبس ؽذ ک کتشل بیی ک دسى کتشل بی کبتیش هشاس هی گیشذ، ثغت ث ع کتشل کبتیش، خاؿ

.یض اص ایي اهش هغتخب یغت Canvas ع خاؿ آى ب امبك هی ؽد. کتشلرذیذی ث هز

هشاس ثگیشذ، امبك Canvas ، ث کتشل بی كشصذی ک دسى کتشل Left ،Top ، Bottom Right چبسخبفیت

.تؼییي هی ؽد Canvas خاذ ؽذ ک تعو ایي خاؿ، هضل کتشل كشصذ ثش سی کتشل

: ث و کذ صیش دهت کیذ

:کذ

<Window x:Class="StackPanel.CanvasContainer"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="CanvasContainer" Height="300" Width="300">

<Canvas>

<TextBox Canvas.Left="10" Canvas.Top="10"

Name="txtNum1">HCanvas.Left="10" Canvas.Top="10"</TextBox>

Page 44: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<TextBox Canvas.Right="30" Canvas.Top="50"

Name="txtNum2">Canvas.Right="30" Canvas.Top="50"</TextBox>

<Button Canvas.Left="40" Canvas.Top="90" Name="btnSum"

Click="btnSum_Click">Canvas.Left="40" Canvas.Top="90"</Button>

<TextBox Canvas.Right="30" Canvas.Bottom="20" Name="txtResult"

>Canvas.Right="30" Canvas.Bottom="20"</TextBox>

</Canvas>

</Window>

Left ،Top ،Right Bottom ثب خاؿ پیعت ؽذ ی Canvas وبطس ک هی ثییذ، هکبى ش کتشلی دسى کتشل

.هؾخـ ؽذ اعت

:ؽکل بیی صبفل اص ارشای ایي کذ ث فست صیش خاذ ثد

:کت

یغت ) ثش خلاف صهبی ک Stretch دهت داؽت ثبؽیذ، ک دس ایي صبلت، چى عبیض کتشل ب پیؼ كشك ثش سی

.ب، عبیض آى ب یض تـییش پیذا هی کذ TextBox هشاس داؽتذ(، ثب تـییش هضتای StackPanel هتشل ب ثش سی

Page 45: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ب تـییش اذاص داد ث TextBoxسا اسد کذ، 20000 10ثبلایی هوبدیش TextBox ث ػام هخبل اگش کبسثش دس د

: ؽکل صیش دس خاذ آهذ

ب صیبد ؽذ تب ثتاذ توبهی TextBox ب ثیؼ اص ػشك كؼلی آى ب ثبؽذ، ػشك TextBox وچیي اگش هوبدیش

.هوبدیش سا دس خد ربی دذ

.ایي ػبفش اعتلبد کیذ MaxWidth MinWidth ب، هی تایذ اص خاؿ textbox شی اص تـییش عبیضثشای پیؾگی

سا ثب هوبدیش یکغبى، هوذاس دی MaxWidth MinWidth هی تایذ خاؿ textbox ثشای حبثت گ داؽتي هل

.کیذ

حبثت ؽذ اعت. ایي ث ایي 120ثبلایی، دس اذاص TextBoxدس کذ صیش، ک ثب تـیش دس کذ هجلی ث رد اهذ اعت،

.حبثت هی هبذ TextBox هل TextBox هؼی اعت ک ثب تـییش هضتیبت داخل

:کذ :کذ

<Window x:Class="StackPanel.CanvasContainer"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="CanvasContainer" Height="300" Width="300">

<Canvas>

Page 46: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<TextBox Canvas.Left="10" Canvas.Top="10" Name="txtNum1"

MaxWidth="120" MinWidth="120">HCanvas.Left="10" Canvas.Top="10"</TextBox>

<TextBox Canvas.Right="30" Canvas.Top="50"

Name="txtNum2">Canvas.Right="30" Canvas.Top="50"</TextBox>

<Button Canvas.Left="40" Canvas.Top="90" Name="btnSum"

Click="btnSum_Click">Canvas.Left="40" Canvas.Top="90"</Button>

<TextBox Canvas.Right="30" Canvas.Bottom="20" Name="txtResult"

>Canvas.Right="30" Canvas.Bottom="20"</TextBox>

</Canvas>

</Window>

:تیز ارشای صبفل اص کذ كم ث فست صیش خاذ ثد

، تـییشی دس ؽل آى 10ذ هی کیذ، تکغت ثبکظ ثبلایی ثب تـییش هوذاس آى ث وبطس ک دس ؽکل كم هؾب

.فست گشكت اعت

: ZIndex خبؾیت

تعو ایي خبفیت هی تایذ ض چیذهبى ػبفشی سا ک ثش سی ن هشاس گشكت اذ سا هؾخـ کیذ. ش کتشلی ک

.اعت هشاس خاذ گشكت کچکتش آى ب ZIndex کتشل بیی ک هوذاس ثر ری ثبؽذ، ثسگترآى ZIndex هوذاس

: ث و کذ صیش دهت کیذ

Page 47: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:کذ

<Window x:Class="StackPanel.ZIndexProp"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="ZIndexProp" Height="300" Width="300">

<Canvas>

<Button Background="Green" Canvas.Left="60" Canvas.Top="24"

MinHeight="50" Canvas.ZIndex="0" >My ZIndex Value IS 0</Button>

<Button Background="Red" Canvas.Left="147" Canvas.Top="60"

MinHeight="50" Canvas.ZIndex="1">My ZIndex Value IS 1</Button>

<Button Background="Blue" Canvas.Left="129" Canvas.Top="98"

MinHeight="50" Canvas.ZIndex="2" >My ZIndex Value IS 2</Button>

<Button Background="Yellow" Canvas.Left="30" Canvas.Top="60"

MinHeight="50" Canvas.ZIndex="3" >My ZIndex Value IS 3</Button>

</Canvas>

</Window>

ZIndex داسای خبفیتثش سی آى هی ثبؽذ، دکو ب Button چبس کتشل Canvas دس ایي کذ ک ؽبهل یک کتشل

.هی ثبؽذ. تیز ارشای کذ كم سادس ؽکل صیش هؾبذ هی کیذ

Page 48: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

وبطس ک دس ؽکل كم یض هؾخـ اعت، دکو ای ک ثب سگ صسد هؾخـ ؽذ اعت، ث دلیل ایک داسای

.ثب لاتشی غجت ث دکو بی دیگش داسد، ثش سی توبهی دکو ب هشاس گشكت اعت ZIndex هوذاس

.وبهی دکو ب هشاس گشكت اعتث دلیل هؾبثی، دکو عجض سگ دس صیش ت

هی ثبؽذ. ث ػویي دلیل، هغوتی اص آى ثبلاتش اص دکو هشهض سگ هشاس 2ثشاثش ثب ZIndex دکو آثی سگ داسای هوذاس

کتشی غجت ث دکو آثی سگ داسد( هغوتی اص آى صیش دکو صسد ZIndex گشكت اعت ) چى دکو هشهض سگ هوذاس

(ثبلاتشی غجت ث دکو آثی سگ داسد ZIndex .) ث ایي دلیل ک دکو صسد سگ داسای خبفیتسگ هشاس گشكت اعت

كبیل بی مویو

Canvas.rar (41.5 ,دیذاس 717کیلثبیت)

:DockPanel کترل

آؽب ؽذیذ. ایي خبفیت ثشای ش کتشلی ک تظین هی ؽذ ) هی Dock ثب خبفیتی ث بم x 2.0.1دس دات ت

آى تظین ؽذ اعت، Dock ؽد(، ثب ػج هی ؽذ )هی ؽد( ک کتشل هسد ظش ثش اعبط هوذاسی ک ثشای خبفیت

Dock ثشای خبفیت Top تشلی داسای هوذاسث یکی اص گؽ بی کتشل پذس خدػ فل ؽد. ث ػاى هخبل اگش ک

ثبؽذ، ایي کتشل هغتویوب ثش سی كشم هشاس گشكت ثبؽذ، ایي کتشل ث گؽ ثبلایی كشم هتقل هی ؽد. دس تیز

ثب تـییش ػشك كشم، ایي کتشل ث فست اتهبتیک یض تـییش عبیض هی دذ ػشك خدػ سا ثب ػشك كشم هزذدا تظین

ک هؼولا دس پبییي Status Bar ایي خبفیت دس ثشبه ب، صیبد اعتلبد هی ؽد، ث ػاى هخبل کتشلهی کذ.اص

.هی ؽد اص ایي و غتذ Dock هی ؽد، یب هی ثشبه ک دس گؽ ثبلایی كشم Dockكشم،

ک هذست ثغیبس ثبلاتش اهکببت داسد. ثب ایي تلبت Dock یض ػولکشی هؾبث ثب ػولکش خبفیت DockPanel کتشل

.ثغیبس ثیؾتشی سا دس اختیبس ؽوب هشاس هی دذ

ث آى پیعت خاذ ؽذ. ایي خبفیت داسای Dock هشاس ثگیشد، خبفیتی ث بم DockPanel ش کتشلی ک دس کتشل

خد سا دس کتشلهی ثبؽذ. تعو ایي هوبدیش هی تایذ کتشل بی Left، Top،Bottom Right چبس هوذاس

DockPanel تظین وبییذ.

: ث و کذ صیش دهت کیذ

:کذ

<Window x:Class="DockPanel.DockPanelContainer"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="DockPanelContainer" Height="300" Width="300">

<DockPanel>

<Button DockPanel.Dock="Right">"Right"</Button>

<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">

<TextBlock Margin="3">sample TextBlock</TextBlock>

<Button HorizontalAlignment="Right" Margin="3">button</Button>

Page 49: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</StackPanel>

<Menu DockPanel.Dock="Bottom" >

<MenuItem Header="Item0">

<MenuItem Header="Item00">

<MenuItem Header="Item000"></MenuItem>

</MenuItem>

<MenuItem Header="Item01"></MenuItem>

<MenuItem Header="Item02"></MenuItem>

<MenuItem Header="Item03"></MenuItem>

</MenuItem>

<MenuItem Header="Item1">

<MenuItem Header="Item10">

<MenuItem Header="Item100"></MenuItem>

</MenuItem>

<MenuItem Header="Item11"></MenuItem>

<MenuItem Header="Item12"></MenuItem>

<MenuItem Header="Item13"></MenuItem>

</MenuItem>

</Menu>

<TextBox TextWrapping="Wrap" MaxWidth="80"

DockPanel.Dock="Left">DockPanel.Dock="Left"</TextBox>

<TextBox TextAlignment="Center" VerticalAlignment="Center">Dock value

Is Fill</TextBox>

</DockPanel>

</Window>

هشاس گشكت اعت. پذ کتشل دیگش ث ػاى كشصذاى هغتوین DockPanel دس ثبلاتشیي، عطش اص ایي کتشل ب، کتشل

د یض ؽبهل چذیي کتشل دیگش هی ثبؽذ. توبهی هشاس گشكت اذ ک ثؼنی اص ایي کتشل ب، خ DockPanel کتشل

:هی ثبؽذ. ث ػاى هخبل هطؼ کذ صیش Dock کتشل بی كشصذف داسای خبفیت پیعت ؽذ

:کذ

<Button DockPanel.Dock="Right">"Right"</Button>

تؼشیق هی کذ ک دس عوت ساعت خدػ هشاس گشكت اعت. DockPanel دکو ای سا ث ػاى كشصذ کتشل

هشاس DockPanel ثبػج هی ؽد ک کتشل، ث گؽ عوت ساعت کتشل "DockPanel.Dock="Rightدعتس

.گیشد

:تیز صبؿ اص ارشای کذ كم دس ؽکل صیش هؾخـ ؽذ اعت

Page 50: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:کردى کترل ب Dock ترتیت در

هن هی ثبؽذ. ث ػاى هخبل د هؼط کذ صیش سا DockPanel هشثه ث کتشل ب دس کتشل Dock تشتیت تظین خبفیت

: ظش ثگیشیذ

:کذ

<Window x:Class="DockPanel.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<DockPanel>

<Button Background="Green" DockPanel.Dock="Top">button1</Button>

<Button Background="Blue" DockPanel.Dock="Left">button2</Button>

<Button DockPanel.Dock="Right">button3</Button>

<Button DockPanel.Dock="Bottom">button4</Button>

<Button >button5</Button>

</DockPanel>

</Window>

: ؽکل صبفل اص ارشای هطؼ کذ كم هؾبث صیش خاذ ثد

Page 51: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

دس کذ كم، دکو ای ک ثب سگ عجض هؾخـ ؽذ اعت، ث دلیل ایک هجل اص دکو آثی سگ تؼشیق ؽذ اعت،

سا دس (button1 button2) کل كنبی گؽ ثبلایی سا ث خد اختقبؿ داد اعت. صبل اگش ربی تؼشیق ایي د دکو

: داؽت ثبؽینکذ ػك کین، یؼی

:کذ

<Window x:Class="DockPanel.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<DockPanel>

<Button Background="Blue" DockPanel.Dock="Left">button2</Button>

<Button Background="Green" DockPanel.Dock="Top">button1</Button>

<Button DockPanel.Dock="Right">button3</Button>

<Button DockPanel.Dock="Bottom">button4</Button>

<Button >button5</Button>

</DockPanel>

</Window>

: تیز صبفل هؾبث صیش خاذ ثد

Page 52: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: Dock در خبؾیت Fill هقذار

دس اهغ ث آى یبص ذاسد. دلیل ایي اهش ث ض .وی ثبغذ Fill دارای هقذار DockPanel از کترل Dock خبؾیت

واس عؼی ثش دادى کل كنبی هرد DockPanel هشثه هی ؽد. کتشل DockPanel چیذهبى کتشل ب دس کتشل

ثبؽذ، ایي Button كوو داسای یک کتشل DockPanel ث کتشل بی كشصذ خدػ هی ثبؽذ. ث ػاى هخبل اگش کتشل

هشثه ث Dock سا ث خد اختقبؿ هی دذ صتی اگش خبفیت DockPanel كنبی هرد ثش سی کتشلدکو کل

(تؼشیق ؾذ ثبؽذ Button هشاس دیذ..)اگش هوبدیش ػشك استلبع ثشای کتشل Left کتشل سا هخلا ثش سی

کیذ، كنبی هرد ثش سی کتشل امبك DockPanel ث کتشل Right ثشاثش ثب Dock صبل اگش دکو دیگشی ثب خبفیت

DockPanel ث دهغوت توغین ثذی هی ؽذ. دس ایي صبلت هوذاس كنبیی ک دکو ال اصتیبد داسد، دس اختیبسػ

.هشاس داد هی ؽد ثوی كنبی هرد ث دکو دم اختقبؿ داد هی ؽد

یض ازبم هی ؽد تب بیتب کل كنبی هرد ثش سی ایي توغین ثذی ثشای کتشل بی كشصذ دیگش ) دس فست رد(

.ثیي کلی کتشل بی كشصذػ توغین ؽد DockPanel کتشل

: LastChildFill خبؾیت

کشدى کتشل ب( صهبی Dock رکش ایي کت مشسی اعت ک توبهی هطبلت گلت ؽذ دس ثخؼ هجلی )تشتیت دس

True تظین گشدد. اگش ایي خبفیت True ثش سی DockPanel اص کتشل LastChildFill دسعت هی ثبؽذ ک خبفیت

هشاس هی گیشد، کل DockPanel هی ثبؽذ، آخشیي کتشلی ک ثش سی کتشل True ثبؽذ ک هوذاس پیؼ كشك آى یض

Page 53: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ذاص هوذاس سا ث خد اختقبؿ هی دذ. دس ؿیش ایي فست و کتشل ب ث ا DockPanel كنبی ثبهی هبذ اص کتشل

گشكت ثوی كنبی ثبهی هبذ ) اگش هرذ ثبؽذ( ثذى اعتلبد DockPanel كنبیی ک یبص داؽت ثبؽذ اص کتشل

.ثبهی خاذ هبذ

: سا امبك کین "LastChildFill="False ث ػاى هخبل اگش دس کذ كم دعتس

:کذ

DockPanel LastChildFill="False">

<Button Background="Green" DockPanel.Dock="Top">button1</Button>

<Button Background="Blue" DockPanel.Dock="Left">button2</Button>

<Button DockPanel.Dock="Right">button3</Button>

<Button DockPanel.Dock="Bottom">button4</Button>

<Button >button5</Button>

</DockPanel>

: تیز ارشا ث فست ؽکل صیش خاذ ثد

ث DockPanel هی ثبؽذ. کتشل button5امبك ؽذ اعت، DockPanel دس ؽکل كم، آخشیي کتشلی ک ث کتشل

دذ ثوی كنبی ایي دکو ث اذاص هسد یبصػ ) اذاص ای ک ثتاذ هتي داخل دکو هؾخـ ثبؽذ( كنب هی

.هرد ) کبدس صسد سگ( ثذى اعتلبد ثبهی خاذ هبذ

كبیل بی مویو

Page 54: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

DockPanel.rar (49.2 ,دیذاس 688کیلثبیت)

: WrapPanel کترل

یض یکی اص کتشل بی کبتیش هی ثبؽذ. ایي کتشل دس هشاصی اعو کبسثشی ؽوب وؼ صیبدی WrapPanel کتشل

وی تاذ ثبصی کذ. دس اهغ هاسدی ک اص ایي کتشل هی تاى اعتلبد کشد هضذد دس ثؼنی اص کبسثشد بی خبؿ

.ث کبس هی سد

ی تاذ تشاص ثذی کیذ. ایي اهش ثغتگی ث ػبفش كشصذ خد سا ث دفست ه WrapPanel کتشل

horizontal ثبؽذ ) صبلت پیؼ كشك Horizontal اص ایي کتشل داسد. اگش ایي خبفیت ثش سی Orientation خبفیت

هی ثبؽذ(، ػبفش ث فست عطشی دس داخل الیي عطش اص ایي کتشل هشاس هیگیشذ. چبچ هوذاس كنبی هسد یبص

ثشای کتشل بی كشصذ، ثیؼ اص كنبی هرد ثش سی یک عطش ثبؽذ، ػبفش كشصذ ث فست اتاتیک ث عطش ثؼذی

.هشاس داد ؽذ WrapPanel ي ػول آى هذس تکشاس هی گشدد تب توبهی ػبفش ثش سی کتشلؽیلت داد هی ؽذ. ای

: ث کذ صیش تر کیذ

:کذ

<Window x:Class="WrapPanel.HorizontalWrapPanel"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="HorizontalWrapPanel" Height="300" Width="300">

<WrapPanel>

<Button Margin="3" MinWidth="32" MaxWidth="32" MinHeight="32">

<Button.Background>

<ImageBrush ImageSource="./Images/add-file.png"></ImageBrush>

</Button.Background>

</Button>

<Button Margin="3" MinWidth="32" MaxWidth="32" MinHeight="32">

<Button.Background>

<ImageBrush ImageSource="./Images/copy.png"></ImageBrush>

</Button.Background>

</Button>

<Button Margin="3" MinWidth="32" MaxWidth="32" MinHeight="32">

<Button.Background>

Page 55: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<ImageBrush ImageSource="./Images/cut.png"></ImageBrush>

</Button.Background>

</Button>

<Button Height="32" MaxWidth="32" MinHeight="32" MinWidth="32"

Width="32">

<Button.Background>

<ImageBrush ImageSource="./Images/zoom+.png" />

</Button.Background>

</Button>

<Button Height="32" MaxWidth="32" MinHeight="32" MinWidth="32"

Width="32">

<Button.Background>

<ImageBrush ImageSource="./Images/zoom-.png" />

</Button.Background>

</Button>

<Button Height="32" MaxWidth="32" MinHeight="32" MinWidth="32"

Width="32">

<Button.Background>

<ImageBrush ImageSource="./Images/search.png" />

</Button.Background>

</Button>

</WrapPanel>

</Window>

ث ػاى کتشل کبتیش آى هشاس داد ؽذ اعت. WrapPanel ایي هطؼ کذ هشثه ث پزش ای اعت ک یک کتشل

دسى ایي کتشل، ؽؼ دکو هشاس داد ؽذ اعت ک ش یک داسای خاؿ هشثه ث خدػ هی ثبؽذ. تیز صبفل

:اص کذ كم دس ؽکل صیش ؾبى داد ؽذ اعت

Page 56: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ث فست عطشی هشاس گشكت اذ. صبل اگش دس WrapPanel وبطس ک دس ؽکل یض هؾخـ اعت، ػبفش سی کتشل

:ؽیلت داد هی ؽذ WrapPanel صهبى ارشا، ػشك پزش كم کن ؽد، ثؼنی اص ػبفش ث عطش ثؼذی دس کتشل

تظین کیذ، ػبفش ث فست عتی تشاص هی ؽذ، Vertical ایي کتشل سا ثش سی Orientation صبل اگش خبفیت

اثتذا عتى ال چبچ كنبی کبكی ثشای هشاس گیشی ػبفش ثش سی عتى ال هرد جبؽذ، ثوی ػبفش ث عتى

Page 57: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.ثؼذی ؽیلت داد هی ؽذ

: سا ث فست صیش تـییش دیذ WrapPanel ثشای اػوبل ایي تـییش کبكیغت تگ آؿبصیي کتشل

:کذ

<WrapPanel Orientation="Vertical">

<Button Margin="3" MinWidth="32" MaxWidth="32" MinHeight="32">

<Button.Background>

<ImageBrush ImageSource="./Images/add-file.png"></ImageBrush>

</Button.Background>

</Button>

<Button Margin="3" MinWidth="32" MaxWidth="32" MinHeight="32">

<Button.Background>

<ImageBrush ImageSource="./Images/copy.png"></ImageBrush>

</Button.Background>

</Button>

<Button Margin="3" MinWidth="32" MaxWidth="32" MinHeight="32">

<Button.Background>

<ImageBrush ImageSource="./Images/cut.png"></ImageBrush>

</Button.Background>

</Button>

<Button Height="32" MaxWidth="32" MinHeight="32" MinWidth="32"

Width="32">

<Button.Background>

<ImageBrush ImageSource="./Images/zoom+.png" />

</Button.Background>

</Button>

<Button Height="32" MaxWidth="32" MinHeight="32" MinWidth="32"

Width="32">

<Button.Background>

<ImageBrush ImageSource="./Images/zoom-.png" />

</Button.Background>

</Button>

<Button Height="32" MaxWidth="32" MinHeight="32" MinWidth="32"

Width="32">

<Button.Background>

<ImageBrush ImageSource="./Images/search.png" />

</Button.Background>

</Button>

Page 58: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</WrapPanel>

داد ؽذ اعت سا ؾبى هی WrapPanel د ؽکل صیش وبیی اص ارشای کذ هجل سا ثب تـییشی ک دس تگ آؿبصیي کتشل

.دذ

هی Tool strip ایزبد کتشل بیی هبذ هی تاذ دس آى ثش رغت، ب WrapPanel یکی اص کبسثش بیی ک اص

.(ب یض هرد اعت toolbar الجت اثضاس بی هزضایی ثشای) .ثبؽذ

: کت

هی Flow Direction داساهی ثبؽذ، خبفیت WrapPanel ، اص رول کتشل WPF خبفیت دیگشی ک اکخش کتشل بی

Page 59: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.ثبؽذ

هی Left To Right هی ثبؽذ ک هوذاس پیؼ كشك آى Left To Right Right To Left ایي خبفیت داسای د هوذاس

ثبؽذ. ایي خبفیت رت تشاص ثذی کتشل ب سا ؾبى هی دذ. ثشی ثشخی اص صثبى ب اص رول صثبى كبسعی، ایي

.خبفیت ثغیبس پش کبسثشد هی ثبؽذ

امبك کشدى دعتس ث ػاى هخبل هی تایذثب

:کذ

FlowDirection="RightToLeft"

.، عتى آؿبصیي سا ثشای هشاس گیشی کتشل ب سا اص عوت ساعت ث چپ تؼییي کیذ WrapPanel یک تگ آؿبصیي کتشل

هكن ثبؽیذ

كبیل بی مویو

WrapPanel.rar (112.1 ,دیذاس 794کیلثبیت)

(ب ) قطوت ػتن ثخع ضم: چیذهبى طراحی کترل

:UniformGrid کترل

ک دس ثخؼ ثؼذی تمیش داد خاذ ؽذ( داسد. ایي کتشل ث تؼذادی عطش ) Gird ایي کتشل ظبشی ؽجی ث ػقش

عتى ثب اذاص بی یکغبى توغین ثذی هی ؽد. ػبفش كشصذ ایي کتشل هی تاذ دس شیک اص ایي علل ب

.هشاس ثگیشذ

.علل بی صبفل اص ایزبد ایي کتشل، وگی داسای اذاص بی یکغبى هی ثبؽذ

:ض اعتلبد اص ایي کتشل ث فست صیش هی ثبؽذ :کذ

<UniformGrid Roes="5" Columns="5">

.

.

.

</UniFormGrid>

.ک ؽبهل تؼشیق خد کتشل، تؼذاد عطش ب تؼذاد عتى بی آى هی ثبؽذ

تشل ثشای هاسد خبفی ث کبس ثشد هی ؽد ث ذست دس هشاصی اعو بی ثشبه ؽوب ث کبس ثشد هی ایي ک

.سا ؾبى هی دذ 5*5ؽد. ث ػاى هخبل ؽکل صیش یک رذل مشة

Page 60: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: کذ :کذ

<Window x:Class="UniformGrid.UniformGridContainer"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="UniformGridContainer" Height="200" Width="200">

<Window.Resources>

<SolidColorBrush x:Key="btnBack" Color="Coral"></SolidColorBrush>

</Window.Resources>

<UniformGrid Rows="6" Columns="6">

<Button Background="Red" >*</Button>

<Button Background="{StaticResource btnBack}">1</Button>

<Button Background="{StaticResource btnBack}">2</Button>

<Button Background="{StaticResource btnBack}">3</Button>

<Button Background="{StaticResource btnBack}">4</Button>

Page 61: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<Button Background="{StaticResource btnBack}">5</Button>

<Button Background="{StaticResource btnBack}">1</Button>

<Button >1</Button>

<Button >2</Button>

<Button >3</Button>

<Button >4</Button>

<Button >5</Button>

<Button Background="{StaticResource btnBack}">2</Button>

<Button >2</Button>

<Button >4</Button>

<Button >6</Button>

<Button >8</Button>

<Button >10</Button>

<Button Background="{StaticResource btnBack}">3</Button>

<Button >3</Button>

<Button >6</Button>

<Button >9</Button>

<Button >12</Button>

<Button >15</Button>

<Button Background="{StaticResource btnBack}" >4</Button>

<Button >4</Button>

<Button >8</Button>

<Button >12</Button>

<Button >16</Button>

<Button >20</Button>

<Button Background="{StaticResource btnBack}">5</Button>

<Button >5</Button>

<Button >10</Button>

<Button >15</Button>

<Button >20</Button>

<Button >25</Button>

</UniformGrid>

</Window>

: کت

دس ایي کتشل، فشاصتب وی تایذ هؾخـ کیذ ک کذام کتشل دس چ عللی هشاس ثگیشد. دس اهغ علل ش کتشل ثش

.داسد، هؾخـ هی ؽد UniformGrid اعبط تشتیجی ک آى کتشل دس کتشل بی كشصذ کتشل

كبیل بی مویو

Page 62: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

UniformGrid.rar (37.2 ,دیذاس 562کیلثبیت)

(ثخع ضم: چیذهبى طراحی کترل ب ) قطوت ن

.ضرش هرثط ث کترل گریذ، در پبیبى هجحث گریذ ارائ هی گردد

: Grid کترل

ثشد تشیي کتشل بی کبتیش هی ثبؽذ. ث هس صتن هی تاى گلت ک دس ثیؼ اص کتشل گشیذ یکی اص هی تشیي پشکبس

دسفذ هاسد، ؽوب اص ایي کتشل ثشای هشاصی اعو کبسثشی ثشبه بی خد اعتلبد خایذ کشد. ایي کتشل داسای 90

.خاؿ صیبدی هی ثبؽذ ک ؽوب سا دس هشاصی اعو بی کبسثشی پیچیذ یبسی هی کذ

طس ک تبکى یض ؽبذ ثد ایذ، ایي کتشل ث فست پیؼ كشك، کتشل کبتیش افلی دس ش پزش ای هشاس داد وب

.ؽذ اعت ک دس هخبل بی هجلی هب س صغی یبص آى سا تـییش داد این هتبعت ثب یبص خد آى سا تؼشیق کشد این

ثب تؼشیق عطش ب عتى .ضطر ضتى آى هی ثبغذخاؼ هرثط ث تعبریف هوتشیي خاؿ کتشل گشیذ،

.ب، هی تایذ هزوػ ای اص علل ب سا دس ایي کتشل ث رد آسیذ

ػبفشی ک ثش سی ایي کتشل هشاس هیگیشذ، ش یک هی تاذ دس یک علل یب ثش صغت تؼشیلی ک ؽوب ثشای آى

.هؾخـ هی کیذ، دس د یب ثیؼ اص د علل هشاس گشیذ

.تؼشیق کتشل گشیذ دس عبد تشیي صبلت، )تب داسای یک عطش یک عتى( ث فست صیش هی ثبؽذ

:کذ

<Grid>

<!--Controls goes here-->

</Grid>

آى پزش هؾبذ هی کیذ، یک کتشل گشیذ داسای XAML تؼشیق كم ک دس اثتذای ایزبد ش پزش رذیذی،د سى کذ

یک عطش عتى ثشای ؽوب ایزبد هی کذ. وبطس ک هجلا یض اؽبس ؽذ، اکخش کتشل ب دس صبلت پیؼ كشك،

غتذ ک ث فست پیؼ كشك داسای هوذاس HorizontalAlignment VerticalAlignment داسای خاؿ

Stretch هی ثبؽذ. ثب تر ث ایي کت چبچ ؽوب یک دکو هبذ Button سا ث تعو دعتس صیش : :کذ

<Button>sample Button</Button>

.تؼلن خاذ گشكت Sample Button ث کتشل گشیذ تؼشیق ؽذ دس کذ هجل امبك کیذ، کل كنبی گشیذ ث کتشل

ایي همع ث ایي دلیل اعت ک کتشل گشیذ عؼی دس اختقبؿ دادى کل كنبی هرد ث کتشل بی دسی آى هی

ثب هوذاس HorizontalAlignment VerticalAlignment وبطس ک گلت ؽذ، داسای خاؿ Button ثبؽذ یض کتشل

Page 63: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

Stretch هی ثبؽذ ک ثبػج هی ؽد، اص صذاکخش كنبی هرد ثش سی کتشل الذ خیؼ ک ث آى اختقبؿ داد

.ؽذ اعت اعتلبد وبیذ. کذ صیش وشا ثب ؽکل ؾبى دذ هطبلت گلت ؽذ هی ثبؽذ

:کذ

<Window x:Class="Grid.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml

/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xa

ml"

Title="Window1" Height="300" Width="300">

<Grid>

<Button>sample Button</Button>

</Grid>

</Window

Page 64: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

کل كنبی هرذ گشیذ دس تیز کل كنبی پزش سا دس Button وبطس ک دس ؽکل كم هؾبذ هی ؽد، کتشل

(اختیبس گشكت اعت. ) صیشا کتشل گشیذ یض کل كنبی پزش سا دس اختیبس گشكت اعت

(ثخع ضم: چیذهبى طراحی کترل ب ) قطوت دن

:اداه کترل گریذ

:ضطر ب ضتى ب در کترل گریذ

اص ؽکل كم، هی تاى تیز گشكت ک کتشل گشیذ ث آى فستی ک هطشس ؽذ، داسای کبسایی ثبلایی وی ثبؽذ.

ب هحش اهغ ؽد ک ثتایذ ثشای آى صهبی ایي کتشل هی تاذ ث هس هحش کبسا دس تلیذ اعو بی کبسثشی ؽو

.عطش ب عتى بی دلخا خد سا تؼشیق کیذ اص آى ب ث فست هحش دلخا اعتلبد وبییذ

ثب تؼشیق عطش ب عتى ب ثشای کتشل گشیذ، هی تایذ آى سا ث تؼذاد علل دلخا خد توغین کشد کتشل

.ى علل ب هشاس دیذبی هسد ظش خد سا دسى آ

ش کتشلی هی تایذ دسى یک یب چذ علل هشاس ثگیشد ش علل ثب اعتلبد اص کتشل بی کبتیش هی تاذ ؽبهل

.یک یب چذ کتشل ثبؽذ

سا تمیش هی دادم، اؽبس ؽکشدم ک دس آى کتشل وی تایذ UniformGrid دس هغوت هجلی دس صهبی ک کتشل

ل هشاس گیشی کتشل بی كشصذ، ظبست داؽت ثبؽیذ علل بی دلخا خد سا ث کتشل بی دلخا خد، ثش هض

.غجت دیذ

اعت ک ثشای ؽوب تقوین هی گیشیذ کتشل بی ؽوب سا ثش اعبط تشتیت تؼشیق UniformGrid دس اهغ ایي کتشل

.ؽذ آ ى ب دس علل بی خد هشاس هی دذ

و چیض دس اختیبس ؽوب خاذ ثد. هی تایذ هؾخـ کیذ ک کذام کتشل دس چ عللی هشاس Grid تشلاهب دس ک

گیشد، یض هؾخـ کیذ ک یک کتشل تب چذ عطش عتى سا هی تاذ اصبه کذ اهکببت دیگشی ک دس هغوت

.بی ثؼذی ث آى ب اؽبس خاذ ؽذ

:گریذقرار گیری کترل ب در کترل

:ثشای هشاس دادى کتشل بی خد دس ى یک کتشل گشیذ، د هشصل صیش سا ثبیغتی ازبم دیذ

: هػخؽ کردى تعذاد ضطر ب ضتى بی گریذ-1

تعو خافی ک ثشای ایي اهش اختقبؿ داد ؽذ اعت، هی تایذ تؼذاد عطش ب عتى ب سا دس کتشل گشیذ

.خد هؾخـ کیذ

:کردى ضطر ضتى دلخا ثرای کترل بی فرزذ هػخؽ-2

وبطس ک هجلا یض اؽبس ؽذ، ش کتشل كشصذی ثش اعبط ع کتشل الذ خیؼ، داسای خاؿ رذیذی هی ؽد

ک آى ب سا خاؿ پیعت ؽذ بهیذین. ایي اهش ثشای کتشل بیی ک کتشل گشیذ ث ػاى کتشل الذ آى ب هی

اص رول خاؿ پیعت ؽذ ث کتشل بی كشصذ، کتشل Row Columnض هغتخب وی ثبؽذ. د خبفیتثبؽذ ی

گشیذ هی ثبؽذ ک تعو آى ب هی تایذ هضل هشاس گیشی کتشل كشصذ سا هؾخـ وبییذ. ث ػا هخبل، کشلی ک

Page 65: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.هی ثبؽذ، دسى عطش دم عتى عم اص کتشل گشیذ هشاس خاذ گشكت Row = 2 Column = 3 داسای هوذاس

: ضطر ب در کترل گریذ

هی ثبؽذ ک تعو آى هی تایذ تؼذاد عطش دلخا ثشای RowDefinitions کتشل گشیذ داسای خبفیتی ث بم

: کتشل گشیذ تؼشیق وبییذ. ث هطؼ کذ صیش تر كشهبییذ :کذ

<Grid>

<Grid.RowDefinitions>

<RowDefinition></RowDefinition>

<RowDefinition></RowDefinition>

<RowDefinition></RowDefinition>

</Grid.RowDefinitions>

</Grid>

ؿبصیيدس ؽکل كم، ع عطش ثشای کتشل گشیذ تؼشیق ؽذ اعت. تؼبسیق عطش ب ثیي د تگ آ

<Grid.RowDefinitions> تگ پبیبی ، </Grid.RowDefinitions> هشاس هی گیشذ.

هؾخـ هی ؽد. دس اهغ ش <RowDefinition></RowDefinition> ش عطش تعو دعتس

ثیبگش یک عطش ث ػاى عطش بی گشیذ هی ثبؽذ. دس تیز <RowDefinition></RowDefinition>دعتس

.، ع عطش ثشای کتشل گشیذ ایزبد هی کذتؼشیق كم

ش عطش دس کتشل گشیذ داسای خاؿ ثغیبسی اعت ک سكتبس آى عطش سا دس هوبثل کتشل بیی ک دسى آى عطش هشاس

.خاذ گشكت هؾخـ هی کذ

تؼبسیق هشثه اص اویت ثبلاتشی ثش خسداس غتذ. Height، MaxHeight MinHeight اص هیبى ایي خاؿ، خاؿ

.دس ثخؼ بی هجلی ث تلنیل گلت ؽذ MaxHeight MinHeight ث خاؿ

در اذاز ضطر ب داسای ع هوذاس هختلق هی تاذ ثبؽذ ک کوی رلتش دس ثخؼ "تؼبدل Height خبفیت

.تمیش داد خاذ ؽذ "ضتى ب

: ضتى ب در کترل گریذ

هی ثبؽذ ک تعو آى هی تایذ تؼذاد عتى بی دلخا ColumnDefinitions کتشل گشیذ داسای خبفیتی ث بم

: ثشای کتشل گشیذ تؼشیق وبییذ. ث هطؼ کذ صیش تر كشهبییذ :کذ

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

</Grid.ColumnDefinitions>

Page 66: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</Grid>

دس ؽکل كم، ع عتى ثشای کتشل گشیذ تؼشیق ؽذ اعت. تؼبسیق عتى ب ثیي د تگ آؿبصیي

<Grid.ColumnDefinitions> تگ پبیبی ، </Grid.ColumnDefinitions> هشاس هی گیشذ.

هؾخـ هی ؽد. دس اهغ ش <ColumnDefinition></ColumnDefinition> شعتى تعو دعتس

ثیبگش یک عتى ث ػاى عتى بی گشیذ هی ثبؽذ. <ColumnDefinition></ColumnDefinition>دعتس

.دس تیز تؼشیق كم، ع عتى ثشای کتشل گشیذ ایزبد هی کذ

ش عتى دس کتشل گشیذ داسای خاؿ ثغیبسی اعت ک سكتبس آى عتى سا دس هوبثل کتشل بیی ک دسى آى عتى

.هشاس خاذ گشكت هؾخـ هی کذ

اص اویت ثبلاتشی ثش خسداس غتذ. تؼبسیق هشثه ث Width، MaxWidth MinWidth اص هیبى ایي خاؿ، خاؿ

.دس ثخؼ بی هجلی ث تلنیل گلت ؽذ MaxWidth MinWidth خاؿ

در اذاز ضطر ب داسای ع هوذاس هختلق هی تاذ ثبؽذ ک کوی رلتش دس ثخؼ "تؼبدل Width خبفیت

.ثشای عطش ب تمیش داد خاذ ؽذ Height ث وشا تؼشیق هوبدیش "ضتى ب

:اداه کترل گریذ

: ShowGridLines خبؾیت

.هی ثبؽذ False هی ثبؽذ ک هوذاس پیؼ كشك آى ShowGridLines کتشل گشیذ داسای خبفیتی ث بم

تـییش دیذ، هی تایذ خطهی ک عطش ب عتى بی کتشل گشیذ سا اص یکذیگش رذا True چبچ ایي هوذاس سا ث

هی کذ سا هؾبذ وبییذ. الجت هؼولا اص ایي خبفیت اعتلبد چذای وی ؽد هگش دس هاسد خبفی ک ؽوب یبص

. ثبؽیذ، خو افل ثیي عطش ب عتى ب سا ث کبسثش بیی ؾبى دیذداؽت

: صبل ث هطؼ کذ صیش ک تشکیجی اص د هطؼ کذ كم اعت تر كشهبییذ :کذ

<Window x:Class="Grid.Window1"

xmlns="http :// schemas.microsoft.com/winfx/2006/xaml

/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xa

ml"

Title="Window1" Height="300" Width="300">

<Grid ShowGridLines="True">

<!--Begin Grid Row Definitions-->

<Grid.RowDefinitions>

<RowDefinition></RowDefinition> <!--

Frist Row-->

<RowDefinition></RowDefinition><!--

Second Row-->

Page 67: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<RowDefinition></RowDefinition><!--

Third Row-->

</Grid.RowDefinitions>

<!--End of Grid Row Definitions-->

<!--Begin Grid Column Definitions-->

<Grid.ColumnDefinitions>

<ColumnDefinition></ColumnDefinition><!--First

Column-->

<ColumnDefinition></ColumnDefinition><!--Second

Column-->

<ColumnDefinition></ColumnDefinition><!--Third

Column-->

</Grid.ColumnDefinitions>

<!--End of Grid Column Definitions-->

</Grid>

</Window>

علل سا ثشای ایي کتشل ث 9م، ع عطش ع عتى ثشای کتشل گشیذ تؼشیق هی کذ ک دس هزوع هطؼ کذ ك

:رد هی آسذ. تیز صبفل اص هطؼ کذ كم سا دس ؽکل صیش هؾبذ هی کیذ

Page 68: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: تعبدل در اذاز ضطر ب ضتى ب

وبطس ک دس ؽکل كم هؾخـ اعت، كنبی هرد ثش سی کتشل گشیذ، ث فست هغبی ثیي توبهی عطش ب

ل توغین هی ؽد. دس صهبى ارشای ثشبه ثب تـییش عبیض پزش ث تجغ آى تـییش عبیض گشیذ، عتى بی ایي کتش

ایي كنب وچبى ث فست اتهبتیک، ث هغوت بی هغبی ثیي عطش ب عتى بی کتشل گشیذ، توغین هی

.ؽد

هی ثبؽذ ک دس ثخؼ هجلی دس UniformGrid دس اهغ دس صبلت ػبدی، کتشل گشیذ داسای سكتبسی هؾبث ثب کتشل

.ساثط ثب آى تمیضبت هلقلی داد ؽذ

دس کتشل Width عتى ب داسای خبفیتی ث بم Height وبطس ک اؽبس ؽذ، عطش ب داسای خبفیتی ث بم

ث آى هوذاس گشیذ هی ثبؽذ. ش یک اص ایي د خبفیت، هی تاذ یکی اص ع هوذاس صیش سا دس ثش گیشذ ک ثب تر

.كنبی آى سكتبس آى ثب کتشل دسی خدػ هؾخـ هی ؽد

: ضبیس هطلق-1

تعو ایي خبفیت هی تایذ، هوذاس هؾخـ حبثتی سا ث ػاى ػشك عتى یب استلبع عطش هؾخـ کیذ. ث

ػاى هخبل دعتس :کذ

<RowDefinition Height="200"></RowDefinition>

:کذ

: تؼشیق هی کذ دعتس صیش 200عطشی سا ثب استلبع حبثت :کذ

<ColumnDefinition Width="200"></ColumnDefinition>

.تؼشیق هی کذ 200عتی سا ثب ػشك حبثت

: ضبیس اتهبتیک-2

ایي خبفیت، ػشك عتى استلبع عطش سا ث فست اتهبتیک ثش اعبط یبص کتشل دسی خدػ تظین هیکذ. ث

ثبؽذ دسى عللی ک عطش عتى آى ثب ایي سػ هوذاس 300 استلبع 200ػاى هخبل اگش کتشلی ثب داسای ػشك

ذاص داد تب ثتاذ کل كنبی هسد یبص آى کتشل سا تبهیي دی ؽذ اذ، هشاسداؽت ثبؽذ، علل هسد ظش تـییش ا

Auto کیذ. هوذاسی ک ثبیذ ث کبس ثشد ؽد تب عطش عتی ث ػاى عطش عتى اتهبتیک هؼشكی گشدد، کلو

:هی ثبؽذ. ث کذ بی صیش تر کیذ :کذ

<RowDefinition Height="Auto"></RowDefinition>

<ColumnDefinition Width="Auto"></ColumnDefinition>

.دس ؽکل كم عطش عتی ثب استلبع اتهبتیک تؼشیق ؽذ اذ

: ضبیس طجی-3

تعو ایي خبفیت، كنبی هرد ثیي تؼذای عطش عتى توغین ثذی هی ؽد. دس اهغ ایي صبلت، صبلت پیؼ

Width کبساکتش * هی تایذ اص ایي خبفیت ثشای خاؿكشك ثشای ػشك عتى ب استلبع عطشب هی ثبؽذ. تعو

Page 69: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

Height اعتلبد وبییذ.

.ث ػاى هخبل، کذ بی صیش تیز ای یکغبى ثب آى چیضی ک دس ؽکل هجلی هلاصظ کشدیذ سا خاذ داؽت :کذ

<Grid ShowGridLines="True">

<!--Begin Grid Row Definitions-->

<Grid.RowDefinitions>

<RowDefinition Height="*"></RowDefinition>

<!--Frist Row-->

<RowDefinition

Height="*"></RowDefinition><!--Second Row-->

<RowDefinition

Height="*"></RowDefinition><!--Third Row-->

</Grid.RowDefinitions>

<!--End of Grid Row Definitions-->

<!--Begin Grid Column Definitions-->

<Grid.ColumnDefinitions>

<ColumnDefinition

Width="*"></ColumnDefinition><!--First Column-->

<ColumnDefinition

Width="*"></ColumnDefinition><!--Second Column-->

<ColumnDefinition

Width="*"></ColumnDefinition><!--Third Column-->

</Grid.ColumnDefinitions>

<!--End of Grid Column Definitions-->

</Grid>

یض، کت هبثل تر ای ک هی تاى دس صبلت عبیض غجلی ث آى تر داؽت ث اهغ دلیل افلی بم گزاسی آى

ویي کت هی ثبؽذ ایي اعت ک ؽوب هی تایذ عطشی یب عتی سا اص لضبظ استلبع ػشك، چذیي ثشاثش عطش

تؼشیق ؽذ *Height = 2 یب عتى دیگشی تؼشیق کیذ. ث ػاى هخبل عطشی ک خبفیت استلبع آى ث فست

تؼشیق ؽذ ثبؽذ. ث ویي فست * = Height ثبؽذ، استلبػؼ د ثشاثش عطشی اعت ک استلبع آى ث فست

عطشی داسا ک استلبع آى 1/8تؼشیق ؽذ اعت، استلبػی ث اذاص *Height=0.25 عطشی ک استلبع آى ث فست

.تؼشیق ؽذ اعت. ایي همع دس هسد عتى ب ػشك آى ب یض فذم اعت *Height =2 ث فست

(ثخع ضم: چیذهبى طراحی کترل ب ) قطوت دازدن

اداه کترل گریذ

Page 70: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:تعییي ضلل ثرای کترل ب ی فرزذ در کترل گریذ

هجلا اؽبس ؽذ ک دلیل افلی ایک کتشل گشیذ اص هیتشیي پشکبسثشد تشیي کتشل بی کبتیتش هی ثبؽذ ایي اعت ک

ی تایذ داؽت ثبؽیذ. دس ایي هغوت ث ض تخقیـ یک ؽوب کتشل کبهلی ثش سی عطش ب عتى بی گشیذ ه

.علل خبؿ دس کتشل گشیذ سا ث یک کتشل هؾخـ ؾبى خان داد

ثشای تخقیـ علل خبفی اص کتشل گشیذ ث یکی اص کتشل بی كشصذ اص خاؿ پیعت

:اعتلبد خاین کشد. ث و کذ صیش دهت کیذ Row Column ؽذ :کذ

<Button Grid.Row="2" Grid.Column="2"

button3</Button>

.( دس گشیذ هشثه هشاس خایذ گشكت9دس هؼ کذ كم، دکو تؼشیق ؽذ دس عطش عتى عم ) علل

: کت

ثشای عطش عتى هؼشف عطش 2ؽوبس عطش ب عتى ب دس گشیذ اص فلش ؽشع هی ؽد. ثبثشیي هوذاس

.گشیذ هی ثبؽذعتى عم دس

:کت

.اص گشیذ ذاسیذ Row Column چبچ ثخایذ کتشلی سا دس علل ال اص گشیذ هشاس دیذ، یبص ث تظین خاؿ

.دساهغ هوذاس پیؼ كشك ایي خاؿ، فلش هی ثبؽذ ک ثیبگش عطش عتى ال گشیذ هی ثبؽذ

: ثشای دسک ثتش ث و کش صیش دهت کیذ :کذ

<Window x:Class="Grid.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml

/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xa

ml"

Title="Window1" Height="300" Width="300">

<Grid ShowGridLines="True">

<!--Begin Grid Row Definitions-->

<Grid.RowDefinitions>

<RowDefinition ></RowDefinition> <!--

Frist Row-->

<RowDefinition ></RowDefinition><!--

Second Row-->

<RowDefinition ></RowDefinition><!--

Third Row-->

</Grid.RowDefinitions>

<!--End of Grid Row Definitions-->

Page 71: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<!--Begin Grid Column Definitions-->

<Grid.ColumnDefinitions>

<ColumnDefinition

></ColumnDefinition><!--First Column-->

<ColumnDefinition

></ColumnDefinition><!--Second Column-->

<ColumnDefinition

></ColumnDefinition><!--Third Column-->

</Grid.ColumnDefinitions>

<!--End of Grid Column Definitions-->

<!--Start Of Defining Child Controls-->

<Button >button1</Button> <!--the Grid cell

of this button is 0-->

<Button Grid.Row="1" Grid.Column="1"

>button2</Button><!--the Grid cell of this button

is 5-->

<Button Grid.Row="2" Grid.Column="2"

>button3</Button><!--the Grid cell of this button

is 9-->

</Grid>

</Window>

تیز دکو هزکس دس تظین ؾذ اذ، دس Row Column وبهس ک هؾبذ هی کیذ، ثشای الیي دکو خاؿ

.الیي عطش عتى اص گشیذ هشاس خاذ گشكت

: تیز ارشای کذ كم هؾبث صیش خاذ ثد

Page 72: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

(ثخع ضم: چیذهبى طراحی کترل ب ) قطوت ضیسدن

(پبیبى کترل گریذ )ضرش هثبل ب را در پبیبى ویي پطت هی تایذ دالد کیذ

: هحذد ضطر ضتى ب در کترل گریذ

دس ایي هغوت د خبفیت دیگش اص خاؿ پیعت ؽذ ثشای کتشل بی دسى کتشل گشیذ سا هسد ثشسعی هشاس خاین

داد. ایي خاؿ ؾبى دذ هضذد ای اص تؼذاد عطش ب عتى بیی اص گشیذ غتذ ک یک کتشل هی تاذ دسثش

.ش هضل هشاس گیشی آى ب داؽت ثبؽیذگیشد. تعو ایي خاؿ هی تایذ کتشل ثتشی ثش سی ػبف

: RowSpan خبؾیت

تعو ایي خبفیت هی تایذ هؾخـ کیذ ک کتشلی چذ عطش اص عطش بی گشیذ سا هی تاذ دس ثش گیشد. ث ػاى

: هخبل هطؼ کذ صیش :کذ

<Grid ShowGridLines="True">

<!--Begin Grid Row Definitions-->

<Grid.RowDefinitions>

<RowDefinition ></RowDefinition>

<!--Frist Row-->

<RowDefinition ></RowDefinition>

<!--Second Row-->

<RowDefinition ></RowDefinition>

<!--Third Row-->

</Grid.RowDefinitions>

<!--End of Grid Row Definitions-->

<!--Begin Grid Column Definitions-->

<Grid.ColumnDefinitions>

Page 73: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<ColumnDefinition ></ColumnDefinition>

<!--First Column-->

<ColumnDefinition ></ColumnDefinition>

<!--Second Column-->

<ColumnDefinition ></ColumnDefinition>

<!--Third Column-->

</Grid.ColumnDefinitions>

<!--End of Grid Column Definitions-->

<!--Start Of Defining Child Controls-->

<Button >button1</Button>

<!--the Grid cell of this button is 0-->

<Button Background="GreenYellow" Grid.Row="0"

Grid.Column="1" Grid.RowSpan="3" >button2</Button>

<Button Grid.Row="2" Grid.Column="2"

>button3</Button>

<!--the Grid cell of this button is 9-->

</Grid>

ثشاثش ثب ع هی ثبؽذ. وچیي دهت کیذ ک RowSpan دس هطؼ کذ كم، دکو دم داسای خبفیت

.تـییش کشد اعت اص یک دس هخبل هجل ث فلش دس ایي هخبل آى Row خبفیت

تیز صبفل اص کذ كم سا دس ؽکل صیش هؾبذ هی کیذ

Page 74: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: ColumnSpan خبؾیت

تعو ایي خبفیت هی تایذ هؾخـ کیذ ک کتشلی چذ عتى اص عتى بی گشیذ سا هی تاذ دس ثش گیشد. ث

: ػاى هخبل هطؼ کذ صیش :کذ

<Grid ShowGridLines="True">

<!--Begin Grid Row Definitions-->

<Grid.RowDefinitions>

<RowDefinition ></RowDefinition>

<!--Frist Row-->

<RowDefinition ></RowDefinition>

<!--Second Row-->

<RowDefinition ></RowDefinition>

<!--Third Row-->

</Grid.RowDefinitions>

<!--End of Grid Row Definitions-->

<!--Begin Grid Column Definitions-->

<Grid.ColumnDefinitions>

<ColumnDefinition ></ColumnDefinition>

<!--First Column-->

<ColumnDefinition ></ColumnDefinition>

<!--Second Column-->

<ColumnDefinition ></ColumnDefinition>

<!--Third Column-->

</Grid.ColumnDefinitions>

<!--End of Grid Column Definitions-->

<!--Start Of Defining Child Controls-->

<Button >button1</Button>

<!--the Grid cell of this button is 0-->

<Button Background="GreenYellow" Grid.Row="1"

Grid.Column="0" Grid.ColumnSpan="3"

>button2</Button>

<Button Grid.Row="2" Grid.Column="2"

>button3</Button>

<!--the Grid cell of this button is 9-->

</Grid>

Page 75: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ثشاثش ثب ع هی ثبؽذ. وچیي دهت کیذ ک ColumnSpan دس هطؼ کذ كم، دکو دم داسای خبفیت

.تـییش کشد اعت یک دس هخبل هجل ث فلش دس ایي هخبل آى اص Column خبفیت

:تیز صبفل اص کذ كم سا دس ؽکل صیش هؾبذ هی کیذ

. تیز آى سا دس ؽکل ثؼذ اص آى ؾبذ هی دذ RowSpan ColumnSpan و کذ صیش ض اعتلبد اص خاؿ :کذ

<Grid ShowGridLines="True">

<!--Begin Grid Row Definitions-->

<Grid.RowDefinitions>

<RowDefinition ></RowDefinition>

<!--Frist Row-->

<RowDefinition ></RowDefinition>

<!--Second Row-->

<RowDefinition ></RowDefinition>

<!--Third Row-->

<RowDefinition ></RowDefinition>

<!--Fourth Row-->

</Grid.RowDefinitions>

<!--End of Grid Row Definitions-->

<!--Begin Grid Column Definitions-->

<Grid.ColumnDefinitions>

<ColumnDefinition ></ColumnDefinition>

<!--First Column-->

<ColumnDefinition ></ColumnDefinition>

Page 76: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<!--Second Column-->

<ColumnDefinition ></ColumnDefinition>

<!--Third Column-->

<ColumnDefinition ></ColumnDefinition>

<!--Fourth Column-->

</Grid.ColumnDefinitions>

<!--End of Grid Column Definitions-->

<!--Start Of Defining Child Controls-->

<Button >button1</Button>

<Button Background="GreenYellow" Grid.Row="1"

Grid.Column="0" Grid.ColumnSpan="4"

Grid.RowSpan="2" >

button2</Button>

<Button Grid.Row="3" Grid.Column="3"

>button3</Button>

</Grid>

اص دکو RowSpan خبفیت .تؼذاد عطش ب عتى ب ث چبس، اكضایؼ پیذا کشد اعت دهت کیذ ک دس ایي و،

.تظین ؽذ اعت ثش ثب دثشا اص آى ColumnSpan خبفیت دم ثشاثش ثب چبس

:1پ

هی ثبغذ. پص تورکس زیبدی ثر آى WPF کترل گریذ از هوتریي پر کبرثرد تریي کترل بی کبتیر در

Page 77: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

داغت ثبغیذ ضعی کیذ ک کبهلا ثر آى ح اضتفبد از اى هطلظ غیذ

:2پ

از ثبثت فبؾل زیبدی ک ثیي پطت ب افتبد؛ پزظ هی طلجن. گرفتبری پیع آهذ ثد.. اگر ثبز ن تبخیر

(چذ رز داغتن، گراى جبغیذ هطوئب ایي تبپیک ث جببی خثی خذ رضیذ)اػبء الله

ایبم ث کبهتبى

كبیل بی مویو

Grid.rar (68.9 ,دیذاس 691کیلثبیت)

(کترل بی هحتا( ) قطوت ال ) Content Controls :ثخع چبرم

:پیع گفتبر

هضغة هی ؽذ، آؽب ؽذیذ. تعو آى WPF یش ک اعبط ثشبه یغی دسدس ثخؼ هجلی ثب کتشل بی کبت

ب تاغتیذ پزش بی خد سا ث هغوت بی هختلق توغین کیذ، کتشل بی خد سا دسى هغوت بی هختلق

اص هبیتس ب هشاس دیذ ثشبه ب یی ایزبد کیذ ک اثغت ث سصلؽي فلض وبیؼ جد دس هضذد عیؼی

.ثب سصلؽي بی هختلق هبثل اعتلبد ثبؽذ

هذل دیگشی اص WPF ثشای گذاسی کتشل بی كشصذ یغتذ. تکلژی WPF کتشل بی کبتیش، تب اهکببت

.سا اسائ هی کذ ک دس ایي ثخؼ ث آى ب خاین پشداخت هحتا هلم

، TextBox ،Label ، کتشل بی دیگشی هبذ Button دس ایي هذل رذیذ، هی تایذ دسى کتشل بی عبد ای هبذ

یب تشکیجی اص ایي کتشل ب سا هشاس دیذ. وچیي هبدس خایذ ثد، اؽکبل ثشداسی کتشل بی دیگش سا دسى ایي کتشل

.ثب هذیشیت ثغیبس ثبلایی هشاس دیذ

: WPF در Content مهف

هلم ػبفش کوی هتلبت ثب هلم کتشل هی ثبؽذ. ث ش چیضی ک ؽوب دس پزش بی ثشبه WPF دس تکلژی

هشاس هی دیذ، یک ػقش تلوی هی ؽد، دس صبلی ک کتشل ب ػبفش یژ ای غتذ ک هی تائذ WPF خد دس

دذ. هخلا هی تاذ سدی بی کبسثش سا دسیبكت کذ، خشری ب ی غجت ث اػوبل کبسثش، ػکظ الؼول ؾبى

... ثشبه سا ث کبسثش ثلشعتذ

هی ثبؽذ ک هبثلیت دسثشگیشی وبیؼ WPF ، و خبؿ دیگشی اص ػبفش دس تکلژیContent کتشل بی

ک ایي خبفیت سا ؽبهل هی ؽذ، کتشل بی هوبدیشی سا داسذ ک هب ث آى ب هضتا هی گیین ث کشل بیی

هضتا هی گیین. دس اهغ ش کتشل هضتا هی تاذ تب یک ػقش داخلی سا دسى خد هشاس دذ. ث ویي رت،

تلبتی ثیي کتشل بی هضتا کتشل بی کبتیش رد داسد. کتشل بی کبتیش هی تاذ، فلش، یک یب چذیي

.سا ث ػاى کتشل بی داخلی کتشل بی كشصذ خد دس ثشگیشذکتشل

:کت

الجت ایي گلت ک کتشل بی هضتا هی تاذ، تب یک ػقش ث ػاى ػقش داخلی خد ثپزیشذ، آى ب سا هضذد

Page 78: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

بی ثغیبسی سا دسى یک کتشل وی کذ. دس اهغ ؽوب هی تایذ، ثب ث کبسگیشیی کتشل بی کبتیش، ػبفش کتشل

.هضتا ؾبى دیذ

سا ؾبذ هی دذ. وبطس ک هی دایذ ایزبد چیي ToolTip ث ػاى هخبل، ػکظ صیش و ای اص یک ػقش

یبص ث کذ یغی صیبدی داسد. موي ایک ػکظ صیش صبلت عبد ای اص ض اعتلبد اص 2.0ػقشی دس دات ت

Content ؽذهت ثب

اسث ثشی هی کذ، کتشل بی Panel وبطس ک اؽبس ؽذ، کتشل بی کبتیش اص کلاط اتضاػی پبی ای ث بم

اسث ثشی هی کذ. ایي همع دس ؽکل صیش ؾبى داد ؽذ ContentControl هضتا یض اص کلاط اتضاػی ث بم

.اعت

Page 79: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...
Page 80: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

Label ،Button ،ToolTip هبذ WPF اعت، ثغیبسی اص کتشل بی الیوبطس ک دس ؽکل كم ؾبى داد ؽذ

...کتشل بی هضتا هی ثبؽذ. ػلا ثش ایي کتشل ب، کتشل بی هضتای دیگشی رد داسذ ک ػلا ثش

.هضتایی ثدى آى ب، خاؿ دیگشی سا یض داسا هی ثبؽذ

ی اص کتشل بی هضتایی هی ثبؽذ ک هبثلیت اعکشل سا یض داسا هی یک ScrollViewer ث ػاى هخبل کتشل

.ثبؽذ. یب کتشل بی کبسثشی ک هی تاذ گشی اص کتشل ب سا رت هبثلیت اعتلبد هزذد دسى خد روغ کذ

:ث طر کلی، کترل بی هحتا ث د دضت زیر تقطین هی غذ

هی Content دعت ال، کتشل بیی غتذ ک ث آى ب اؽبس ؽذ. ایي کتشل ب داسای ثخؾی ث بم ( الف

ثبؽذ ک هی تاذ یک ػقش سا ث ػاى هضتای خد دسى خد گذاسی کذ. صبل ایي ػقش هی تاذ یک سؽت

.ک کتشل کبتیش ثبؽذهتی ثبؽذ یب هی تاذ هزوػ ای اص کتشل بی هتلبت ثش سی ی

دعت دم، کتشل بیی غتذ ک ػلا ثش داؽتي خبفیت کتشل بی دعت ال، داسای ثخؼ دیگشی ث (ة

سا ازبم هی دذ. اص ایي کتشل ب هی تاى ث Content هی ثبؽذ ک ػولی هبذ ثخؼ Header بم

بس کشد ک دس ثخؼ بی آتی ثب آى ب آؽب خایذ ... اؽ GroupBox، Expander ، کتشل TabItem کتشل

.ؽذ

: Content خبؾیت

هی ثبؽذ. ایي خبفیت دس ثشگیشذ ػبفشی خاذ ثد ک ث ػاى Content ش کتشل هضتا، داسای خبفتی ث بم

.هضتای کتشل هسد ظش ؽبخت هی ؽذ

:ثبؽذ WPF تاذ ؽبهل د دعت کلی صیش اص ػبفشدس کتشل بی هضتا، هی Content ث هس کلی خبفیت

، اسث ثشی وی کذ. دس ایي هاسد، UIElement دعت ال ػبفشی غتذ ک اص کلاط (الف

.كشاخای ؽذ تب هتي آى ػقش سا ث ػاى هضتای ػقش هسد ظش هشاس دذ ()ToString هتذ

WPF اسث ثشین هی کذ. ایي ػبفش دس اهغ توبهی ػبفش .یژال دس UIElement دعت دم ػبفشی ک اص کلاط (ة

.ایي ػبفش اعتلبد هی کذ تب هبثل وبیؼ دس کتشل هضتا ثب ؽذ OnRender سا ؽبهل هی ؽذ. کوپبیلش اص هتذ

: ثشای دسک ثتش ایي همع ث د هطؼ کذ صیش دهت کیذ :کذ

:کذ

<Button HorizontalAlignment="Center" VerticalAlignment="Center">this a simple text

Content</Button>

Page 81: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

دس ظش گشكت اعت. ایي ع اص هضتا، اص ع دعت Button کذ كم تب یک سؽت هتی سا ث ػاى هضتای ػقش

.)الق( هی ثبؽذ

:تیز ارشای ایي کذ ؽجی ث ؽکل صیش خاذ ثد

تؾجی کشد. 2.0ػبفش دس دات ت كشین سک Text سا ث خبفیت Content دس اهغ هی تاى دس ایي صبلت، خبفیت

.الجت دهت داؽت ثبؽیذ ک ایي هسد فشكب یک تؾجی هی ثبؽذ

: صبل ث کذ صیش دهت کیذ :کذ

:کذ

<Button>

<Image Source="./Images/WPF.jpg"></Image>

</Button>

هی ثبؽذ ک (ة) هؼشكی هی کذ. ایي و اص هضتا، اس ع دعت Button کذ كم یک ػکظ سا ث ػاى هضتای

.ث ػاى هضتا گشدیذ اعت Button ، ػکظ هسد ظش هبثل وبیؼ دس کتشلOnRenderثب كشاخای هتذ

:تیز صبفل اص ارشای کذ كم ث فست صیش هی ثبؽذ

Page 82: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ثدذ. دساهغ هذست ایي خبفیت ثغیبس كشاتش اص هشاس Content د هطؼ کذ كم اص عبد تشیي، صبلت بی خبفیت

تفبد از کترل بی کبتیر هی تایذ کترل ثب اض .گیشی یک ػکظ یب یک سؽت هتی دسى آى هی ثبؽذ

. یب ر کترل هحتای دیگر قرار دیذ Button بی ثطیبری را در یک

: ث هطؼ کذ صیش دكت کیذ

:کذ

:کذ

<Window x:Class="ContentControlsInWPF.TextAndImageContent"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="TextAndImageContent" Height="300" Width="300">

<Grid>

<Button VerticalAlignment="Center" HorizontalAlignment="Center">

<StackPanel>

<Image VerticalAlignment="Top" MaxHeight="75" MaxWidth="75" Stretch="Fill"

Source="./Images/WPF.jpg"></Image>

<TextBlock TextAlignment="Center" >Fill Boxes And then Click Ok</TextBlock>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">name</Label>

<TextBox MinWidth="120"></TextBox>

Page 83: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">Family</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<Button>Ok</Button>

<Image VerticalAlignment="Top" MaxHeight="75" MaxWidth="75" Stretch="Fill"

Source="./Images/WPF.jpg"></Image>

</StackPanel>

</Button>

</Grid>

</Window>

کتشل Content دس کتشل کبتیش افلی كشم یؼی گشیذ هشاس گشكت اعت. دس خبفیت Button دس هطؼ کذ كم، یک

Button یک کتشل StackPanel هشاس گشكت ایت ک خد ؽبهل پذ کتشل كشصذ ث ؽضس صیش هی ثبؽذ:

ثب TextBlock هشاس گشكت اعت. عپظ یک کتشل StackPanel ، دس ثبلاتشیي هغوت کتشل Image اثتذا یک ػقش

داخلی ث هزوػ کتشل بی StackPanel هشاس گشكت اعت. پظ اص آى د کتشل Fill Boxes And then Click Ok هتي

.كشصذ امبك ؽذ اذ

دس کتشل داخلی خد ؽبهل د کتشل كشصذ هی ثبؽذ، ک ث فست اكوی StackPanel ش یک اص ایي د کتشل

.کبتیش خد هشاس گشكت اذ

.دیگش هشاس داد ؽذ اعت Image دس بیت یک ػقش Button داخلی، یک کتشل StackPanel پظ اص د کتشل

:تیز صبفل اص ارشای کذ كم سا دس ؽکل صیش هؾبذ هی کیذ

Page 84: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

وبطس ک دس ؽکل كم یض هؾبذ هی کیذ، ث ساصتی هی تاى ثب ثش گیشی اص کتشل بی کبتیش، ث تؼذاد

سا دس یک کتشل هضتا هشاس داد. اص ایي خبفیت هی تاى دس عبخت کتشل بی WPF دلخای اص کتشل بی

.علبسؽی کتشل بی کبسثشی ثش ثغیبسی ثشد

: ا ثب خاؼ یژکترل بی هحت

کتشل بی ثغیبسی رد داسد ک ػلا ثش هبثلیت هضتایی ثدى، WPF وبطس ک پیؼ تش یض اؽبس کشدم، دس

داسای یک عشی خاؿ کبسثشدی دیگشی هی ثبؽذ ک هی تاذ هضتیبت خدؽبى سا ث خثی هذیشیت کذ.

: ان پشداخت، ػجبستذ اصتؼذادی اص ایي کتشل ب ک دس اداه ث آى ب خ

: ScrollViewer کترل

ایي کتشل اهکببتی سا دس اختیبس ؽوب هشاس هی دذ ک ثتایذ ثب آى ب، هضتثبت ایي کتشل سا هذیشیت کیذ. چبچ

یذا کشد تب پ Scroll هضتیبت داخلی ایي کتشل اص هوذاس كنبی هرد ثش سی اى ثیؾتش ثبؽذ، کتشل ث فست اتهبتیک

.ثتاذ و هضتیبت خد سا ث خثی دس ثش گیشد

: GroupBox کترل

2.0ثب ایي کتشل آؽب غتیذ، ایي کتشل ثشای گش ثذی تؼذادی اص کتشل ب ث کبس هی سد، ک غجت ث غخ

.ؽذ خد داساثی اهکببت ثیغتشی هی ثبؽذ،ک دس اداه ثیؾتش ثب ایي کتشل آؽب خایذ

: TabControl کترل

دات ت كشین سک رد داسد. دس ایزب هبثلیت بی ثغیبسی ث ایي کتشل امبك 2.0و ایي کتشل یض دس غخ

Page 85: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.ؽذ اعت ک دس ربی خد، تمیش داد خاذ ؽذ

: Expander کترل

ى ػلاه صیبدی ث اعتلبد اص آى داسذ. ایي کتشل ایي کتشل، واس یکی اص کتشل بیی ثد اعت ک ثشبه یغیب

غخ بی هجل اص آى رد ذاؽت ثشبه یغبى یب اهذام ث ؽتي ایي کتشل هی 2.0دس دات ت كشین سک

کشدذ یب اص کتشل بی ؽت ؽذ تعو اؽخبؿ حبلج اعتلبد هی کشذ. و ایي کتشل دس یذص ثغیبس

.ؽذ اعت اعتلبد

:صبل، دس اداه ث تمیش ش یک اص ایي کتشل ب ثب رکش هخبل بیی دس هسد ش یک خاین پشداخت

: ScrollViewer کترل

هشاس دادین. صبل اگش Button وبطس ک دس ثخؼ هجلی هلاصظ کشدیذ، تؼذادی کتشل سا ث ػاى هضتای کتشل

كنبی لاصم سا ثشای آى ب ذاؽت ثبؽذ، وی تاذ و هضتیبت خد Button تؼذاد ایي کتشل ب، صیبد ؽد کتشل

.سا ث دسعتی ؾبى دذ

اعتلبد هی کین. ایي کتشل هی تاى ثب ش ػقشی ث ScrollViewer گشی ث بم کتشلدس ایي هاهؾ اص کتشل دی

کبس سد. صهبی ک هضتیبت ایي کتشل اص كنبی هرد، ثیؾتش ؽد، ایي کتشل ث فست اتهبتیک ، هضتیبت خد سا

ى کتشل هسد ظش دعتشعی داؽت هبثل پیوبیؼ کشد کبسثش هی تاذ ثب اعکشل کشدى، ث توبهی هضتیبت دس

.ثبؽذ

:ث هطؼ کذ صیش ک افلاس ؽذ تک کذ هجل هی ثبؽذ تر کیذ

:کذ

<Window x:Class="ContentControlsInWPF.ContentWithScrollViewerFeature"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="ContentWithScrollViewerFeature" Height="300" Width="300">

<Grid>

<Button VerticalAlignment="Center" HorizontalAlignment="Center">

<ScrollViewer>

<StackPanel>

<Image VerticalAlignment="Top" MaxHeight="75"

MaxWidth="75" Stretch="Fill" Source="./Images/WPF.jpg"></Image>

<TextBlock TextAlignment="Center" >Fill Boxes And then

Click Ok</TextBlock>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">name</Label>

<TextBox MinWidth="120"></TextBox>

Page 86: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">Family</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">Age</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">Country</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">City</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">State</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">P__Code</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">Address</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<StackPanel Orientation="Horizontal">

<Label MinWidth="50">Phone</Label>

<TextBox MinWidth="120"></TextBox>

</StackPanel>

<Button>Ok</Button>

<Image VerticalAlignment="Top" MaxHeight="75"

MaxWidth="75" Stretch="Fill" Source="./Images/WPF.jpg"></Image>

</StackPanel>

</ScrollViewer>

Page 87: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</Button>

</Grid>

</Window>

هشاس گشكت Button ایي هخبل، هبذ هخبل هجلی هی ثبؽذ ثب ایي توبت ک کتشل بی ثیؾتشی دسى هضتای کتشل

.هشاس گشكت اعت ScrollViewer شل دیگشی ث بمدسى کت Button اذ. ػلا ثش ایي، توبهی هضتیبت کتشل

ؿیش كؼبل هی ScrollViewer هرد ثبؽذ، کتشل Button چبچ كنبی لاصم ثشای وبیؼ توبهی هضتیبت کتشل

ث ScrollViewer هزد جبؽذ، کتشل Button ؽد صهبی ک كنبی لاصم ثشای وبیؼ کتشل بی دسی کتشل

.سا وبیؼ دذ Button كؼبل ؽذ تب ثتاذ توبهی هضتیبت کتشلفست اتهبتیک

ایي کتشل ثغیبس پش کبسثشد هی ثبؽذ. ث ایي دلیل ک ػلا ثش ایک ؿیش اثغتگی ثشبه ؽوب ث سصلؽي فلض

.هشاس دیذوبیؼ صلع هی گشدد، ثبػج هی ؽد ک ثتایذ تؼذاد ثغیبسی اص کتشل ب سا دسى یک کتشل هضتایی

: تیز صبفل اص ارشای هخبل كم سا دس ؽکل صیش هؾبذ هی کیذ

: کت

هی تایذ کتشل ثیؾتشی ثش HorizontalScrollBarVisibility VerticalScrollBarVisibility تعو د خبفیت

داؽت ثبؽیذ. ش یک اص ایي خاؿ داسای چبس هوذاس هی ثبؽذ ک دس صیش ث ScrollViewerی ػولکشد کتشلس

Page 88: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: تمیش شیک خاین پشداخت

ایي هوذاس ثبػج هی ؽد ک اس بی اعکشل ) ثشای ش کذام ک تظین ؽذ ثبؽذ( دس صبلتی : Auto هقذار-1

.ک ؿیش كؼبل غتذ، ؾبى داد ؾذ

.ایي هوذاس ثبػج هی ؽد ک اس بی اعکشل ویؾ دس صبلت ؿیش كؼبل ثبؽذ : Disabled هقذار-2

اس بی اعکشل ) ثشای ش کذام ک تظین ؽذ ثبؽذ( هخلی ایي هوذاس ثبػج هی ؽد ک : Hidden هقذار-3

ثیي کتشل ب Tab ثبؽذ. دس ایي صبلت هی تایذ ػول اعکشل سا ثب کلیذ بی رت وب ازبم دیذ یب ثب کلیذ

یصشکت کیذ ک دس ایي فست صهبی ک ث کتشلی هی سعیذ ک دس هضذد كنبیی کتشل هسد ظش ) دس هخبل هجل

Button ) یغت، ػول اعکشل ث فست اتهبتیک ازبم هی ؽد.

ایي گضی ک هوذاس پیؼ كشك ثشای ش دخبفیت یض هی ثبؽذ، دس صهبی ک اعکشل دس صبلت : Visible هقذار-4

.غتذ کبسثش هی تاذ آى ب سا هؾبذ وبیذ Visible ؿیش كؼبل هی ثبؽذ، وچبى ث فست

Scroll Viewer اداه کترل

: ترل اضکرل ثب ثربه یطیک

وبطس ک دس ثخؼ هجل دیذیذريال هی تاغتیذ ثب هط یب ثب کتشل بی رت وب، کتشل اعکشل خد سا

.هذیشیت کیذ

سا دس صهبى ارشای ثشبه ثب ScrollViewer دس ایي ثخؼ ثب تاثؼی آؽب خایذ ؽذ ک هی تایذ تعو آى ب کتشل

.کذ یغی هذیشیت وبییذ

: کت

ایي تاثغ ش کذام داسای د غخ هی ثبؽذ، یکی ثشای اعکشل ػودی دیگشی ثشای اعکشل اكوی. دس ایزب

اعکشل ػودی ػولکشد آى ب سا خاین دیذ دس هسد تاثغ هشثو ث اعکشل اكوی تب بم آى ب تاثغ هشثه ث

.رکش هی گشدذ. چى ػولکشد آى ب دهیوب هؾبث ػولکش غخ خد ثشای اعکشل ػودی غتذ

: ()LineUp هتذ

کشل ػودی هی ثبؽذ. پظ هیضاى رب ثزبیی ػولکش ایي هتذ هبذ کلیک کشدى ثش سی ػلاهت رت وبی ثبلایی اع

.ک تعو ایي هتذ ازبم هی گیشیذ ثغتگی ث هیضاى ربثزبیی تعو ػلاهت رت وبی ثبلایی داسد

.هی ثبؽذ LineLeft هؼبدل ایي هتذ ثشای اس اعکشل اكوی ، هتذ

: ()LineDown هتذ

پبییی اعکشل ػودی هی ثبؽذ. پظ هیضاى رب ثزبیی ػولکش ایي هتذ هبذ کلیک کشدى ثش سی ػلاهت رت وبی

Page 89: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.ک تعو ایي هتذ ازبم هی گیشیذ ثغتگی ث هیضاى ربثزبیی تعو ػلاهت رت وبی ثبلایی داسد

هی ثبؽذ LineRight هؼبدل ایي هتذ ثشای اس اعکشل اكوی ، هتذ

: PageUp هتذ

ي ػلاهت رت وبی ثبلایی دعتگیش اعکشل دس اعکشل ػولکش ایي هتذ هبذ کلیک کشدى ثش سی كبفل ثی

.ػودی هی ثبؽذ

هی ثبؽذ PageLeft هؼبدل ایي هتذ ثشای اس اعکشل اكوی ، هتذ

ػولکش ایي هتذ هبذ کلیک کشدى ثش سی كبفل ثیي ػلاهت رت وبی پبییی دعتگیش : PageDown هتذ

.اعکشل دس اعکشل ػودی هی ثبؽذ

هی ثبؽذ PageRight بدل ایي هتذ ثشای اس اعکشل اكوی ، هتذهؼ

: ScrollToHome هتذ

.ایي هتذ اعکشل سا ث پبییي تشیي هغوت هوکي اتوبل هی دذ

.هی ثبؽذ ScrollToLeftEnd هؼبدل ایي هتذ ثشای اس اعکشل اكوی ،

: ScrollToEnd هتذ

.ایي هتذ اعکشل سا ث ثبلاتشیي هغوت هوکي اتوبل هی دذ

.هی ثبؽذ ScrollToRightEnd هؼبدل ایي هتذ ثشای اس اعکشل اكوی ، هتذ

: ScrollToVerticalOffset هتذ

.ایي هتذ ثش اعبط هوذاسی ک ث ػاى آسگهبى هی گیشد ػول اعکشل سا ازبم هی دذ

هی ثبؽذ ScrollToHorizontalOffset اعکشل اكوی؛ هتذ هؼبدل ایي هتذ ثشای اس

: هطؼ کذ صیش ض اعتلبد اص ایي هتذ ب سا ؾبى هی دذ

:کذ

<Window x:Class="contentControls.ProgrammingScrollViewer"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="ProgrammingScrollViewer" Height="300" Width="650">

<Grid>

<Grid.RowDefinitions>

<RowDefinition Height="Auto"></RowDefinition>

Page 90: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<RowDefinition></RowDefinition>

<RowDefinition Height="Auto"></RowDefinition>

<RowDefinition Height="AUto"></RowDefinition>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

</Grid.ColumnDefinitions>

<WrapPanel Margin="10" Grid.ColumnSpan="5" Orientation="Horizontal">

<Button Margin="1" Tag="LU"

Click="ScrollButtons_Click">LineUp()</Button>

<Button Margin="1" Tag="LD"

Click="ScrollButtons_Click">LineDown()</Button>

<Button Margin="1" Tag="PU"

Click="ScrollButtons_Click">PageUp()</Button>

<Button Margin="1" Tag="PD"

Click="ScrollButtons_Click">PageDown()</Button>

<Button Margin="1" Tag="TE"

Click="ScrollButtons_Click">ScrollToEnd()</Button>

<Button Margin="1" Tag="TH"

Click="ScrollButtons_Click">ScrollToHome()</Button>

<Button Margin="1" Tag="TOV"

Click="ScrollButtons_Click">ScrollToVerticalOffset(50)</Button>

</WrapPanel>

<ScrollViewer Grid.Row="2" Margin="1,1,1,5">

<TextBlock TextWrapping="Wrap" Background="BurlyWood">

Normal Images

</TextBlock>

</ScrollViewer>

Page 91: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<ScrollViewer Grid.Row="2" Grid.Column="1" Margin="1,1,1,5">

<TextBlock TextWrapping="Wrap" Background="BurlyWood">

After 2 LineDown And 2 LineRight

</TextBlock>

</ScrollViewer>

<ScrollViewer Grid.Row="2" Grid.Column="2" Margin="1,1,1,5">

<TextBlock TextWrapping="Wrap" Background="BurlyWood">

After 2 PageDown And 2 PageRight

</TextBlock>

</ScrollViewer>

<ScrollViewer Grid.Row="2" Grid.Column="3" Margin="1,1,1,5">

<TextBlock TextWrapping="Wrap" Background="BurlyWood">

After ScrollToEnd And ScrollToRightEnd

</TextBlock>

</ScrollViewer>

<ScrollViewer Grid.Row="2" Grid.Column="4" Margin="1,1,1,5">

<TextBlock TextWrapping="Wrap" Background="BurlyWood">

After ScrollToVerticalOffset (50) And

ScrollToHorizontalOffset(50)

</TextBlock>

</ScrollViewer>

<Button Margin="5" Grid.Row="1" Grid.Column="0"

VerticalAlignment="Center" HorizontalAlignment="Center">

<ScrollViewer Name="btnScroll1"

HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">

<Image VerticalAlignment="Top" Stretch="Fill"

Source="WPF.jpg"></Image>

</ScrollViewer>

</Button>

Page 92: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<Button Margin="5" Grid.Row="1" Grid.Column="1"

VerticalAlignment="Center" HorizontalAlignment="Center">

<ScrollViewer Name="btnScroll2"

HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">

<Image VerticalAlignment="Top" Stretch="Fill"

Source="WPF.jpg"></Image>

</ScrollViewer>

</Button>

<Button Margin="5" Grid.Row="1" Grid.Column="2"

VerticalAlignment="Center" HorizontalAlignment="Center">

<ScrollViewer Name="btnScroll3"

HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">

<Image VerticalAlignment="Top" Stretch="Fill"

Source="WPF.jpg"></Image>

</ScrollViewer>

</Button>

<Button Margin="5" Grid.Row="1" Grid.Column="3"

VerticalAlignment="Center" HorizontalAlignment="Center">

<ScrollViewer Name="btnScroll4"

HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">

<Image VerticalAlignment="Top" Stretch="Fill"

Source="WPF.jpg"></Image>

</ScrollViewer>

</Button>

<Button Margin="5" Grid.Row="1" Grid.Column="4"

VerticalAlignment="Center" HorizontalAlignment="Center">

<ScrollViewer Name="btnScroll5"

HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">

Page 93: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<Image VerticalAlignment="Top" Stretch="Fill"

Source="WPF.jpg"></Image>

</ScrollViewer>

</Button>

<WrapPanel Margin="10" Grid.ColumnSpan="5" Grid.Row="3"

Orientation="Horizontal">

<Button Margin="1" Tag="LL"

Click="ScrollButtons_Click">LineLeft()</Button>

<Button Margin="1" Tag="LR"

Click="ScrollButtons_Click">LineRight()</Button>

<Button Margin="1" Tag="PL"

Click="ScrollButtons_Click">PageLeft()</Button>

<Button Margin="1" Tag="PR"

Click="ScrollButtons_Click">PageRight()</Button>

<Button Margin="1" Tag="TL"

Click="ScrollButtons_Click">ScrollToLeftEnd()</Button>

<Button Margin="1" Tag="TR"

Click="ScrollButtons_Click">ScrollToRightEnd()</Button>

<Button Margin="1" Tag="TOH"

Click="ScrollButtons_Click">ScrollToHorizontalOffset(50)</Button>

</WrapPanel>

</Grid>

</Window>

دس هطؼ کذ كم، دکو بیی ثشای کتشل هتذ ب ثشای اعکشل ػودی یض دکو بیی ثشای کتشل هتذ ب دس

ذ. دس ایي هخبل ض ث کبسگیشی کتشل بی کبتیش رت هشاس گشكت ا WrapPanel اعکشل اكوی ثش سی د کتشل

.ث خثی هؾخـ اعت WPF چیذهبى ػبفش

Page 94: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

(کترل بی هحتا( ) قطوت پجن ) Content Controls :ثخع چبرم

: GroupBox کترل

وبطس ک گلت ؽذ، ثؼنی اص کتشل بی هضتا داسای د ثخؼ ثشای هشاس دادى کتشل ب ث ػاى هضتای خد

هی ثبؽذ. دیگش خبفیتی ک Content داسذ. یکی اص ایي ثخؼ ب وبطس ک دس کتشل بی هجل یض دیذیذ، خبفیت

هی Header تشل ب داسای ایي خبفیت هی ثبؽذ، خبفیتهی تاذ ث ػاى هضتا ث کبس ثشد كوو تؼذادی اصک

.هی گیذ HeaderedContentControlsثبؽذ. ایي ع کتشل ب افطلاصب کتشل بی

کتشل بیی ک اص ایي دعت هی ثبؽذ دس ایي ثخؼ ثشسعی آى ب خاین پشداخت، ػجبستذ اص

ک کتشل رذیذی دس یژال Expander کتشل TabControl اص کتشل TabItem ، آثزکت GroupBox کتشل

.هی ثبؽذ 2008اعتدی

هی ثبؽذ. وبطس ک اص بم ایي کتشل هؾخـ اعت ایي GroupBox عبد تشیي کتشل ثیي ایي ع کتشل، کتشل

شل دس صهبى اعتلبد اص کتشل ثشای گش ثذی دعت ای اص کتشل ب ث کبس هی سد. یکی اص کبسثشد بی هحش ایي کت

.دس ثشبه هی ثبؽذ RadioButton ػبفش

ب ک ث دکو بی سادییی یض هؼشف هی ثبؽذ، صهبی اعتلبد هی ؽد ک کبسثش هزبص ث RadioButton اص

ک رغیت اتخبة تب یک آیتن اص ثیي چذیي آیتن هختلق ثبؽذ. ث ػاى هخبل دس كشهی اص ثشبه کبسثش هی خاذ

خد سا هؾخـ کذ، دس ایي صبلت اص د دکو سادییی ، یکی ثشای صى دیگشی ثشای آیتن هشد اعتلبد خاین کشد.

صبل اگش ایي دکو ب دس هبلت یک گش هؾخـ ؾذ، کبسثش هی تاذ ش د ایي دکو ب سا اتخبة کذ ) ث

هی ثبؽذ. دس ایي صهبى ایي د دکو سا دس هبلت یک گش هؼشكی افطلاس تیک ثضذ( ک خلاف هطن ثشبه یغی

هی کین. اص ایي پظ ثشبه ث فست اتهبتیک اربص اتخبة كوو یکی اص ایي د دکو سا دس ش لضظ ث کبسثش هی

.دذ

:ث هؼط کذ صیش تر كشهبییذ

Page 95: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:کذ

<Grid>

<Grid.RowDefinitions>

<RowDefinition Height="Auto"></RowDefinition>

<RowDefinition Height="Auto"></RowDefinition>

</Grid.RowDefinitions>

<GroupBox Header="Group Box 1 " Margin="10" Padding="10"

VerticalAlignment="Top">

<StackPanel>

<RadioButton Margin="3" Name="rbtn1" IsChecked="True" >radio

button

1</RadioButton>

<RadioButton Margin="3" Name="rbtn2">radio button

2</RadioButton>

<RadioButton Margin="3" Name="rbtn3">radio button

3</RadioButton>

<RadioButton Margin="3" Name="rbtn4">radio button

4</RadioButton>

</StackPanel>

</GroupBox>

<GroupBox Grid.Row="1" Header="GroupBox 2 " Margin="10" Padding="10"

VerticalAlignment="Top">

<StackPanel>

<RadioButton Margin="3" IsChecked="True" Name="rbtn5" >radio

button

5</RadioButton>

<RadioButton Margin="3" Name="rbtn6">radio button

6</RadioButton>

<RadioButton Margin="3" Name="rbtn7">radio button

7</RadioButton>

<RadioButton Margin="3" Name="rbtn8">radio button

8</RadioButton>

</StackPanel>

</GroupBox>

</Grid>

ب دس عو ال یب عطش ؽوبس GroupBox دس کذ كم، ثشای گشیذ افلی پزش د عطش تؼشیق ؽذ اعت. یکی اص

Page 96: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

دکو سادییی هی 4داسای GroupBox اص کتشل گشیذ هشاس گشكت اعت. ش کتشل 1 دیگشی دسى عطش ؽوبس 0

یض ثشای چیذهبى ثتش دکو بی سادییی اعتلبد StackPanel اص کتشل GroupBox ثبؽذ.وچیي دس کتشل بی

.ؽذ اعت

ییذ، دکو بی سادییی دس ش گش اص دکو بی سادییی گش دیگش کبهلا هزضا هی وبطس ک دس ؽکل هی ث

ثبؽذ اتخبة ؽذى تیک خسدى آى ب تبحیشی ثش یکذیگش ذاسد. لی دس ش گش تب هی تایذ یک دکو سادییی

.سا اتخبة وبییذ

: تیز ارشای کذ بی كم سا دس ؽکل صیش هؾبذ هی کیذ

: Groupname خبؾیت

وی ثبؽذ هشثه ث کتشل بی سادیی هی ثبؽذ. لی چى اص ایي دکو GroupBox کتشلایي خبفیت هشثه ث

.ب دس ایي هخبل اعتلبد کشدین، ایي خبفیت سا دس ایزب تمیش هیذن

بی هختلق لی دس هبلت یک GroupBox دس ثؼنی اص هاسد هوکي اعت صبلتی پیؼ آیذ ک ثخایذ کتشل ب سا دس

هبذی کیذ. دس ایي صبلت یض کبسثش ثبیغتی دس ش لضظ كوو اتخبة یکی اص آیتن ب سا داؽت ثبؽذ. اگش گش عبص

هشثه ث GroupName بی هختللی چیذ ؽذ ثبؽذ. دس ایي صبلت اص خبفیت GroupBox چ ایي آیتن ب دس

:دکو بی سادیی اعتلبد هی کین. صبل ث کذ صیش ک تـییش کشد کذ كم هی ثبؽذ، دهت کیذ

:کذ

<Grid>

<Grid.RowDefinitions>

<RowDefinition Height="Auto"></RowDefinition>

<RowDefinition Height="Auto"></RowDefinition>

</Grid.RowDefinitions>

<GroupBox Header="Group Box 1 " Margin="10" Padding="10"

VerticalAlignment="Top">

<StackPanel>

<RadioButton GroupName="sameGroup" Margin="3" Name="rbtn1"

IsChecked="True"

>radio button 1</RadioButton>

<RadioButton GroupName="sameGroup" Margin="3"

Name="rbtn2">radio button

2</RadioButton>

<RadioButton GroupName="sameGroup" Margin="3"

Name="rbtn3">radio button

Page 97: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

3</RadioButton>

<RadioButton GroupName="sameGroup" Margin="3"

Name="rbtn4">radio button

4</RadioButton>

</StackPanel>

</GroupBox>

<GroupBox Grid.Row="1" Header="GroupBox 2 " Margin="10" Padding="10"

VerticalAlignment="Top">

<StackPanel>

<RadioButton GroupName="sameGroup" Margin="3"

IsChecked="True" Name="rbtn5"

>radio button 5</RadioButton>

<RadioButton GroupName="sameGroup" Margin="3"

Name="rbtn6">radio button

6</RadioButton>

<RadioButton GroupName="sameGroup" Margin="3"

Name="rbtn7">radio button

7</RadioButton>

<RadioButton GroupName="sameGroup" Margin="3"

Name="rbtn8">radio button

8</RadioButton>

</StackPanel>

</GroupBox>

</Grid>

و دکو بی سادییی ثب یک اعن یکغبى هؾخـ ؽذ اذ. ایي ػول ثب ػج GroupName دس کذ كم، خبفیت

هی ثبؽذ ث ػاى یک GroupName هی ؽد ک ش د یب چذ دکو سادییی ک داسای هوذاس یکغبى دس خبفیت

گش

ؽکل صیش هؾبذ هی کیذهؾخـ ؽذ. وبطس ک دس

هختلق چیذ ؽذ اذ، GroupBox رذا غتین، کتشل بی سادییی دس د GroupBox اگش چ داسای د کتشل

و اى ب داسای یک هوذاس هؾخـ هی ثبؽذ، دس ش لضظ تب هی تایذ یکی اص GroupName لی چى خبفیت

.ؾت دکو سادییی كم سا اتخبة وبییذ

Page 98: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: کت

ث ایي کت دهت GroupName دس ث کبس گیشی خبفیت !!!هضتبه ثبؽیذ GroupName دس ث کبسگیشی خبفیت

داؽت ثبؽیذ، ک تب ئکو بیی ک داسای هوذاس یکغبى ثشای ایي خبفیت ثبؽذ، ث ػاى یک گش تلوی هی

دیگشی GroupBox1 ؽذ. ث ػاى هخبل اگش تب د دکو اص ؾت دکو سادییی ثبلا )یکی دس

یي د دکو ث ػاى یک گش داد ؽذ، هوذاس دی کیذ، تب و GroupName سا ثب خبفیت( GroupBox2 دس

هؾخـ هی

.اتخبة وبیذ GroupBox2 یب د دکو سا دس GroupBox1 ؽذ کبسثش هی تاذ وضهبى د دکو سا دس

**

: GroupBox ذر بی پیػرفت در کترل

اص اى دعت کتشل بی هضتایی اعت ک داسای یک ثخؼ ث GroupBox وبطس ک اؽبس ؽذ، کتشل

هؾخـ هی ؽد، هی تاذ هبذ Header هی ثبؽذ. ایي ثخؼ ک ثب خبفیت header بم

داسای یک ػقش ثبؽذ. صبل ایي ػقش هی تاذ یک هتي عبد ثبؽذ یب هی تاذ یک کتشل Content خبفیت

.تشل كشصذ هی ثبؽذکبتیش ثبؽذ ک خد ؽبهل چذیي ک

وبی اعت ک دس هخبل هجل دیذیذ. یؼی هشاس دادى تب یک GroupBox دس کتشل Header ؽکل عبد خبفیت

. GroupBox هتي عبد ث ػاى ذس کتشل

گلتن هی تایذ ثب کوی ث کبس گیشی رم علیو ثب ث کبس گیشی کتشل بی کبتیش ک وبطس ک WPF اهب دس

هی ثبؽذ دس ثخؼ هجلی ث فست کبهل ثب آى ب آؽب ؽذیذ، کتشل بی WPFاص اعبعی تشیي هجبصج

GroupBox علبسؽی صیجبیی

.ثغبصیذ دیگش یبص هذ کتشل بی ؽت ؽذ تعو ؽشکت یب اؽخبؿ حبلج جبؽیذ

: ث ػاى هخبل ث و کذ صیش دهت کیذ

:کذ

<Window x:Class="contentControls.HeaderdGroupBoxContent"

xmlns="http://schemas.microsoft.com/winfx/2...l/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="HeaderdGroupBoxContent" Height="220" Width="350">

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="Auto"></ColumnDefinition>

<ColumnDefinition Width="Auto"></ColumnDefinition>

</Grid.ColumnDefinitions>

<GroupBox Margin="10" Padding="10" VerticalAlignment="Top">

<GroupBox.Header>

<StackPanel Orientation="Horizontal">

Page 99: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<Image Source=".\Images\star.png" MaxHeight="20"

MaxWidth="20"

Margin="0,0,2,0"></Image>

<TextBlock Margin="5,0,5,0"> ( Select Score )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Bisque" Offset=".5"/>

<GradientStop Color="Black" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</GroupBox.Header>

<StackPanel>

<RadioButton Margin="3" Name="rbtn1" IsChecked="True" >

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

</RadioButton>

<RadioButton Margin="3" Name="rbtn2">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn3">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

</StackPanel>

Page 100: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</RadioButton>

<RadioButton Margin="3" Name="rbtn4">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn5">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

</StackPanel>

</GroupBox>

<GroupBox Grid.Column="1" Margin="10" Padding="10"

VerticalAlignment="Top">

<GroupBox.Header>

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\banner.png" MaxHeight="32"

MaxWidth="32"></Image>

<TextBlock Margin="5,0,5,0"> ( Select Country )

<TextBlock.Foreground>

<LinearGradientBrush>

Page 101: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Gray" Offset=".5"/>

<GradientStop Color="Red" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</GroupBox.Header>

<StackPanel>

<RadioButton Margin="3" Name="rbtn6" IsChecked="True">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Iran.ico" MaxWidth="20"

MaxHeight="20"/>

<TextBlock>(Iran)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn7">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Albania.ico" MaxWidth="20"

MaxHeight="20"/>

<TextBlock>(Albani)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn8">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Hong-Kong.ico" MaxWidth="20"

MaxHeight="20"/>

<TextBlock>(Hong-Kong)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn9">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Italy.ico" MaxWidth="20"

MaxHeight="20"/>

<TextBlock>(Italy)</TextBlock>

</StackPanel>

Page 102: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</RadioButton>

</StackPanel>

</GroupBox>

</Grid>

</Window>

هجل اص تمیضبت هشثه ث کذ كم، تیز صبفل اص ارشای آى سا دس ؽکل صیش ثب ن هؾبذ هی کین

علبسؽی ثشای اهتیبص ب کؾس ب ایزبد GroupBox وبطس ک دس ؽکل كم هؾبذ هی کیذ، د کتشل

.اص صبلت هتی خبسد ؽذ اعت GroupBox ؽذ اعت. وبطس ک هی ثییذ، ذس کتشل بی

:ب ث فست صیش تؼشیق ؽذ اعت GroupBox ش یک Header دس کذ كم، خبفیت

:کذ

<GroupBox . . . >

.

.

.

<GroupBox.Header>

.

.

.

</GroupBox.Header>

.

.

.

</GroupBox >

Page 103: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

ث فست كم تؼشیق ؽذ اعت، ایي اعت ک هی خاین دسى ایي خبفیت ػکظ Header دلیل ایک خبفیت

.هتي سا دس کبس یکذیگش هشاس دین یک ذس علبسؽی ثشای آى ایزبد وبیین

هجلا یض اؽبس کشد ثدم ک دس صهبی ک هی خاین اص هوبدیش پیچیذ پیؾشكت ای ثشای یک خبفیت اعتلبد

.خبسد کین ث ؽکل خد ػبفش تؼشیق وبیین Attribute ب سا اص صبلتکین ثبیغتی آى

یک کتشل کبتیش ) هتبعت ثب یبص( تؼشیق کین کتشل بی خد سا دسى اى Header صبل هی تاین دسى خبفیت

ب یک GroupBox ش یک اص Header هشاس دین. ث ػاى هخبل، دس هخبل هجل، دس خبفیت

.تظین ؽذ اعت Horizontal آى ثش سی Orientation تؼشیق کشد این ک خبفیت StackPanel ػقش

تؼشیق کشد TextBlock دیگشی اص ع Image هزکس، د ػقش دیگش، یکی اص ع StackPanel عپظ دسى ػقش

آى هؾخـ Source ظیل گ داسی ػکغی سا ک دس خبفیت Image این. ػقش

.هتي هؾخـ ؽذ دسى اى سا ؾبى هی دذ TextBlock سا داسد ػقش ؽذ اعت

هشثه ث ش یک اص دکو بی سادییی یض اص صبلت عبد تک هتی خبسد ؽذ Content ػلا ثش ایي ، خبفیت

تعو کتشل بی کبتیش ث هوبدیش پجچؾذ پیؾشكت غجت داد ؽذ اذ. ثذیي تشتیت کتشل

کبهلا علبسؽی GroupBox بی

.ایزبد ؽذ اذ

اهکببت WPF دهت کیذ ک کذ، كم یکی اص عبد تشیي ؽکل ب ثشای تؼشیق ػبفش علبسؽی هی ثبؽذ. دس

ثغیبسی ثشای ؽوب ایزبد ؽذ اذ ک هی تایذ تعو آى ب کتشل بی علبسؽی صیجب هتبعت ثب پشژ بی خد

.سا ایزبد وبییذ

هخبل ثب تـییش کچکی دس کذ كم، ثذى تـییش دادى ػکظ بی اعتلبد ؽذ هی ث ػاى

:عوت چپ سا ث ؽکلی دس آسیذ ک دس صیش هؾبذ هی کیذ GroupBox تایذ

ب، ظبش ثغیبس صیجبتشی غجت ث و هجلی خدػ Score هشثه ث GroupBox وبطس ک هی ثییذ، کتشل

.پیذا کشد اعت

(کترل بی هحتا( ) قطوت غػن ) Content Controls :ثخع چبرم

Page 104: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

: TabControl کترل

آؽب ؽذیذ. دس ایي رب هقذ فضجت کشدى دس هسد ایي 2.0ثب بم ایي کتشل ػولکشد ایي کتشل دس دات تلشین سک

ی دس اص ایي کتشل خاین پشداخت. لی ث ػاى اؽبس کچک TabItem کتشل سا ذاسم، ثیؾتش ث ؽشس خبفیت

( sajadlove ث کذ صیش دهت کیذ ) کذ ؽت ؽذ تعو کبسثش WPF هسد عبخت ایي کتشل دس

:کذ

<TabControl Margin="5">

<TabItem Header="TabOne">

<StackPanel>

<CheckBox Margin="3">Name</CheckBox>

<CheckBox Margin="3">Family</CheckBox>

<Button Margin="3">Go</Button>

</StackPanel>

</TabItem>

<TabItem Header="TabTwo">

<StackPanel>

<CheckBox Margin="3">SettingOne</CheckBox>

<CheckBox Margin="3">SettingTwo</CheckBox>

<Button Margin="3">Go</Button>

</StackPanel>

</TabItem>

</TabControl>

(سا دس ؽکل صیش هؾبذ هی کیذ window تیز صبفل اص ارشای کذ كم ) دسى یک

Page 105: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

--------------------------------------------------------------------------------------------------

: TabItem خبؾیت

هی ثبؽذ. دس اهغ 2.0دس دات ت كشین سک TabControl دس کتشل TabPage ؽجی ث TabItem خبفیت

یضاص اى دعت اص ػبفشی TabItem هؾخـ هی کذ. ػقش tabControl یک فلض سا دس کتشل TabItem ش

یض هی تاذ، TabItem اص ػقش Header خبفیت GroupBoxهی ثبؽذ. وبذ header اعت ک داسای خبفیت

.ؽبهل یک هتي عبد ثبؽذ یب ایک ؽبهل یک هضتای پیچیذ تؾکیل ؽذ اص چذیي ػقش ثبؽذ

(sajadlove ث کذ صیش دهت کیذ ...)ؽت ؽذ تعو کبسثش :کذ

<Grid>

<TabControl Margin="5">

<TabItem Header="TabOne">

<TabItem.Background>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="LightSteelBlue" Offset="0"/>

<GradientStop Color="LightBlue" Offset="1" />

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TabItem.Background>

<Border BorderBrush="DarkBlue" BorderThickness="2" CornerRadius="5">

<StackPanel>

<StackPanel.Background>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="LightSteelBlue" Offset="0"/>

<GradientStop Color="LightBlue" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</StackPanel.Background>

<CheckBox Margin="3">SettingOne</CheckBox>

<CheckBox Margin="3">SettingTwo</CheckBox>

<Button Margin="3">Go</Button>

</StackPanel>

</Border>

Page 106: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</TabItem>

<TabItem>

<TabItem.Header>

<StackPanel>

<TextBlock>TabTwo</TextBlock>

</StackPanel>

</TabItem.Header>

<StackPanel>

<CheckBox Margin="3">SettingOne</CheckBox>

<CheckBox Margin="3">SettingTwo</CheckBox>

<Button Margin="3">Go</Button>

</StackPanel>

</TabItem>

</TabControl>

</Grid>

:تیز ارشا

-----------------------------------------------------------------------------------------------

..ب هطبلت ایي پغت هی ثبؽذ یض تر كش هبییذصبل ث هخبل ربهغ تش صیش ک تش کیت، پغت بی هجلی ث :کذ

Page 107: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<TabControl Margin="10">

<TabItem Header="Simpe Header">

<TextBlock TextAlignment="Center" HorizontalAlignment="Center"

VerticalAlignment="Center" FontSize="18">Without Content</TextBlock>

</TabItem>

<TabItem >

<TabItem.Header>

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20"

Margin="0,0,2,0"></Image>

<TextBlock Margin="5,0,5,0"> ( Score Tab Page )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Green" Offset=".5"/>

<GradientStop Color="Black" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</TabItem.Header>

<GroupBox Margin="10" Padding="10" VerticalAlignment="Top">

<GroupBox.Header>

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20"

Margin="0,0,2,0"></Image>

<TextBlock Margin="5,0,5,0"> ( Select Score )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Bisque" Offset=".5"/>

<GradientStop Color="Black" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

Page 108: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</GroupBox.Header>

<StackPanel>

<RadioButton Margin="3" Name="rbtn1" IsChecked="True" >

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</RadioButton>

<RadioButton Margin="3" Name="rbtn2">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn3">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn4">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn5">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

Page 109: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</RadioButton>

</StackPanel>

</GroupBox>

</TabItem>

<TabItem >

<TabItem.Header>

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>

<TextBlock Margin="5,0,5,0"> ( Country Page )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Gray" Offset=".5"/>

<GradientStop Color="Red" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</TabItem.Header>

<GroupBox Margin="10" Padding="10" VerticalAlignment="Top">

<GroupBox.Header>

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>

<TextBlock Margin="5,0,5,0"> ( Select Country )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Gray" Offset=".5"/>

<GradientStop Color="Red" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</GroupBox.Header>

Page 110: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<StackPanel>

<RadioButton Margin="3" Name="rbtn6" IsChecked="True">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Iran.ico" MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Iran)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn7">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Albania.ico" MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Albani)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn8">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Hong-Kong.ico" MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Hong-Kong)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn9">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Italy.ico" MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Italy)</TextBlock>

</StackPanel>

</RadioButton>

</StackPanel>

</GroupBox>

</TabItem>

<TabItem >

<TabItem.Header>

<StackPanel>

<Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20"

Margin="0,0,2,0"></Image>

<TextBlock Margin="5,0,5,0"> ( Score )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

Page 111: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<GradientStop Color="Bisque" Offset=".5"/>

<GradientStop Color="Black" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

<Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>

<TextBlock Margin="5,0,5,0"> ( Country )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Gray" Offset=".5"/>

<GradientStop Color="Red" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</TabItem.Header>

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="Auto"></ColumnDefinition>

<ColumnDefinition Width="Auto"></ColumnDefinition>

</Grid.ColumnDefinitions>

<GroupBox Margin="10" Padding="10" VerticalAlignment="Top">

<GroupBox.Header>

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="20" MaxWidth="20"

Margin="0,0,2,0"></Image>

<TextBlock Margin="5,0,5,0"> ( Select Score )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Bisque" Offset=".5"/>

<GradientStop Color="Black" Offset="1"/>

Page 112: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</GroupBox.Header>

<StackPanel>

<RadioButton Margin="3" Name="rbtn10" IsChecked="True" >

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</RadioButton>

<RadioButton Margin="3" Name="rbtn11">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn12">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn13">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn14">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

Page 113: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<Image Source=".\Images\star.png" MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

</StackPanel>

</GroupBox>

<GroupBox Grid.Column="1" Margin="10" Padding="10" VerticalAlignment="Top">

<GroupBox.Header>

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\banner.png" MaxHeight="32" MaxWidth="32"></Image>

<TextBlock Margin="5,0,5,0"> ( Select Country )

<TextBlock.Foreground>

<LinearGradientBrush>

<LinearGradientBrush.GradientStops>

<GradientStop Color="Brown" Offset="0"/>

<GradientStop Color="Gray" Offset=".5"/>

<GradientStop Color="Red" Offset="1"/>

</LinearGradientBrush.GradientStops>

</LinearGradientBrush>

</TextBlock.Foreground>

</TextBlock>

</StackPanel>

</GroupBox.Header>

<StackPanel>

<RadioButton Margin="3" Name="rbtn15" IsChecked="True">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Iran.ico" MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Iran)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn16">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Albania.ico" MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Albani)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn17">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Hong-Kong.ico" MaxWidth="20" MaxHeight="20"/>

Page 114: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<TextBlock>(Hong-Kong)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn18">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Italy.ico" MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Italy)</TextBlock>

</StackPanel>

</RadioButton>

</StackPanel>

</GroupBox>

</Grid>

</TabItem>

</TabControl>

صبل، گبی ث تیز ارشای هخبل كم خاین اذاخت تمیضبت هشثه سا دس ش ثخؼ خایذ دیذ. هخبل كم ک

کپی کیذ ارشا وبییذ( یک پزش ک Grid کذ کبهلی هی ثبؽذ،) هی تایذ آى سا دس یک پزش دس داخل ػقش

یب Page داسای چبس TabControl قشهی ثبؽذ سا ؾبى هی دذ. ػ TabControl داسای یک ػقش

: هی ثبؽذ ک ث تشتیتت دس ؽکل بی صیش هؾبذ هی کیذ TabItem ربس

: ؾفح ال

Page 115: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

دس TextBlock خد هی ثبؽذ یض یک ػقش header داسای یک هتي عبد دس TabItem الیي ػقش

.هی تاذ ثبؽذ TabItem خد هی ثبؽذ. ایي عبد تشیي ؽکل اص یک ػقش Content خبفیت

: ؾفح دم

هی ثبؽذ. دسى ایي کتشل Horizontal ثب هوذاس Orientaion ثب خبفیت StackPanel ایي فلض داسای یک کتشل

ایي ػقش Content هشاس گشكت اعت. هوذاس خبفیت TextBlock یک ػکظ یک هتي دسى ػقش

.عوت چپ هخبل هجل هی ثبؽذ ک یک هضتای پیچیذ پیؾشكت سا ثشای ؽوب ایزبد هی کذ GroupBox وبى

: ؾفح ضم

Page 116: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

هی ثبؽذ. دسى ایي کتشل Horizontal ثب هوذاس Orientaion ثب خبفیت StackPanel ایي فلض داسای یک کتشل

GroupBox ىایي ػقش وب Content هشاس گشكت اعت. هوذاس خبفیت TextBlock یک ػکظ یک هتي دسى ػقش

.عوت ساعت هخبل هجل هی ثبؽذ ک یک هضتای پیچیذ پیؾشكت سا ثشای ؽوب ایزبد هی کذ

:ؾفح چبرم

ب فلضبت هجلی هی ثبؽذ. الیي تلبت ایک دس ایي فلض header خد کوی هتلبت تش اص header ایي فلش دس

س اى چبس ػقش هزضا هشاس گشكت اعت. د ػقش ثشای گ داسی ػکظ ب د ػقش ثشای گذاسی دس هغوت ذ

هرد دس ذس ایي فلض ث فست شهبل StackPanel هتي بی هشثه. د هیي تلبت اى ایي اعت ک کتشل

دس Vertical ث فست پیؼ كشكآى تظین ؾذ اعت ک ثبػج هی ؽد Orientation هی ثبؽذ. یب دس اهغ خبفیت

Page 117: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.بی هخبل هجلی هوذاس دی ؽذ اعت GroupBox ایي فلض یض، ثب Content ظش گشكت ؽد. خبفیت

هخبل كم، ؾبى دذ ایي اعت ک ؽوب هی تایذ ثب ثشی گیشی اص ػبفش کبتیش کتشل بی کبهلا علبسؽی

.خد سا ایزبد وبییذ

: Expander کترل

ایي کتشل ثذى ؽک یکی اص کتشل بی پش کبسثشدی اعت ک ثشبه یغبى ویؾ ث دجبل آى رت اعتلبد دس

ثشبه بی خد ثد اذ. اص صهبى ظس دات ت، ایي کتشل ث فست پیؼ كشك دس یژال اعتدی رد ذاؽت

کتشلی وبیذ یب ث عوت کتشل بی ؽت ؽذ تعو ثشبه یغبى هزجس ثدذ یب خد اهذام ث ایزبد چیي

.اؽخبؿ ؽشکت بی حبلج سی آسذ

، ایي کتشل سا ثشای اعتلبد کبسثشاى هشاس داد. ایي کتشل WPF دس تکلژی 2008هبکشعبكت دس یژال اعتدی

و ک ؿبلجب ث فست كلؼ اعت، داسای د ثخؼ هی ثبؽذ، ثخؼ ذس یک ثخؼ هضتا. ثخؼ ذس ؽبهل یک دک

سا هخلی کذ یب آى سا اص صبلت هخلی Content هی ثبؽذ. کبسثش ثب کلیک کشدى ثش سی ایي دکو هی تاذ ثخؼ

.خبسد وبیذ

.هی تاذ ؽبهل ش ػقش دیگشی ثبؽذ WPF ایي کتشل یض هبذ و ػبفش Content ثخؼ

ایزبد Expander عبد هی ثبؽذ. ثب اعتلبد اص هطؼ کذ صیش هی تایذ یک کتشلض اعتلبد اص ایي کتشل ثغیبس

:وبییذ :کذ

<Expander Header="sample text header">sample text content</Expander>

هی ثبؽذ ک ؽبهل یک هتي عبد ث ػاى ذس یک Expander هطؼ کذ كم عبد تشیي صبلت تؼشیق یک کتشل

هتي عبد دیگش ث ػاى هضتا هی ثبؽذ. چبچ ثخایذ اص ذس هضتابی پیچیذ تش پیؾشكت تش علبسؽی

:سا ث فست صیش تؼشیق کیذ Expander اعتلبد کیذ، ثبیغتی کتشل Expander خد دس کتشل :کذ

<Expander >

<Expander.Header>

.

.

.

</Expander.Header>

<Expander.Content>

.

Page 118: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.

.

</Expander.Content>

</Expander>

ابی هسد ظش خد دس ایي صبلت هیتایذ ثب هشاس دادى یک کتشل کبتیش دس ثخؼ هسد ظش، اهذام ث ایزبد ذس هضت

.کیذ

: رت دس ک ثیؾتش ث هخبل صیش تر کیذ

:کذ

<Window x:Class="contentControls.ExpnaderControl"

xmlns="http://schemas.microsoft.com/winfx/2...l/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="ExpnaderControl" Height="400" Width="350">

<Grid>

<Grid.RowDefinitions>

<RowDefinition ></RowDefinition>

<RowDefinition ></RowDefinition>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition ></ColumnDefinition>

<ColumnDefinition></ColumnDefinition>

</Grid.ColumnDefinitions>

<!-- Define Expanders-->

<Expander Header="simple expander" BorderBrush="Green"

BorderThickness="2" HorizontalContentAlignment="Center"

VerticalContentAlignment="Center">sample content</Expander>

<Expander Margin="5" Grid.Row="0" Grid.Column="1" IsExpanded="True"

HorizontalContentAlignment="Left" BorderBrush="Brown" BorderThickness="3">

<Expander.Header>

<StackPanel Orientation="Horizontal">

<TextBlock Padding="3">Country GroupBox</TextBlock>

<Image Source=".\Images\banner.png" MaxWidth="20"

MaxHeight="20"></Image>

</StackPanel>

Page 119: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</Expander.Header>

<Expander.Content>

<GroupBox Margin="10" Padding="10" VerticalAlignment="Top">

<StackPanel>

<RadioButton Margin="3" Name="rbtn6"

IsChecked="True">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Iran.ico"

MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Iran)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn7">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Albania.ico"

MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Albani)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn8">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Hong-Kong.ico"

MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Hong-Kong)</TextBlock>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn9">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\Italy.ico"

MaxWidth="20" MaxHeight="20"/>

<TextBlock>(Italy)</TextBlock>

</StackPanel>

</RadioButton>

</StackPanel>

</GroupBox>

</Expander.Content>

</Expander>

Page 120: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

<Expander IsExpanded="True" Grid.Row="1" Header="Gradient Expander"

BorderBrush="Red" BorderThickness="2">

<Expander.Background>

<RadialGradientBrush>

<RadialGradientBrush.GradientStops>

<GradientStop Color="Green" Offset="0"/>

<GradientStop Color="Wheat" Offset="1"/>

</RadialGradientBrush.GradientStops>

</RadialGradientBrush>

</Expander.Background>

<Expander.Content>

<GroupBox BorderBrush="Brown" BorderThickness="3" Margin="10"

Padding="10" VerticalAlignment="Top">

<StackPanel>

<RadioButton Margin="3" Name="rbtn1" IsChecked="True"

>

<Image Source=".\Images\star.png" MaxHeight="16"

MaxWidth="16"></Image>

</RadioButton>

<RadioButton Margin="3" Name="rbtn2">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn3">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

Page 121: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

</RadioButton>

<RadioButton Margin="3" Name="rbtn4">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

<RadioButton Margin="3" Name="rbtn5">

<StackPanel Orientation="Horizontal">

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

<Image Source=".\Images\star.png"

MaxHeight="16" MaxWidth="16"></Image>

</StackPanel>

</RadioButton>

</StackPanel>

</GroupBox>

</Expander.Content>

</Expander>

<Expander BorderBrush="CadetBlue" BorderThickness="3"

IsExpanded="True" Grid.Row="1" Grid.Column="1" Header="Larg Content text">

<ScrollViewer>

<TextBlock TextWrapping="Wrap">

From WikiPedia

he Windows Presentation Foundation (or WPF),

Page 122: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

formerly code-named Avalon, is the graphical subsystem

feature of the .NET Framework 3.0

(formerly called WinFX)[1] and is directly related to

XAML.[2] It is pre-installed in Windows

Vista,[3] the latest version of the Microsoft Windows

operating system. WPF is also available

for installation on Windows XP SP2 and Windows Server

2003. It provides a consistent programming

model for building applications and provides a clear

separation between the UI and the business logic.

A WPF application can be deployed on the desktop or

hosted in a web browser. It also enables rich control,

design, and development of the visual aspects of Windows

programs. It aims to unify a host of application

services: user interface, 2D and 3D drawing, fixed and

adaptive documents, advanced typography, vector graphics,

raster graphics, animation, data binding, audio and

video. Although WinForms will continue to be widely used,

WPF is now the preferred choice for developing line of

business applications, especially since the release of

the .NET Framework 3.5, Visual Studio 2008, and

Expression Blend[4].

Microsoft Silverlight is a web-based subset of WPF. During development it was

named WPF/E, which stood for "Windows Presentation

Foundation/Everywhere". The Silverlight subset enables

Flash-like web and mobile applications with the same code

as Windows .NET applications. 3D features are not

supported, but XPS and vector-based drawing are included.

The architecture of Windows Presentation Foundation spans across both managed

code and native code components; however, the public

API exposed is only available via managed code. While the

majority of WPF is in managed code, the composition

engine which renders the WPF applications is a native

component. It is named as Media Integration Layer (MIL)

and resides as milcore.dll. It interfaces directly with

DirectX and provides basic support for 2D and 3D surfaces

, timer-controlled manipulation of contents of a surface

with a view to exposing animation constructs at a higher

Page 123: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

level, and compositing the individual elements of a WPF

application into a final 3D "scene" that represents

the UI of the application and rendering it to the

screen.[5][6] The media codecs are also implemented in unmanaged

code, and are shipped as windowscodecs.dll.[5] In the

managed world, PresentationCore (presentationcore.dll) provides

a managed wrapper for MIL as well as implements the core

services for WPF,[5] including a property system

that is aware of the dependencies between the setters and

consumers of the property, a message dispatching system by

means of a Dispatcher object to implement a specialized

event system and services which can implement a layout system

such as measurement for UI elements.[6]

PresentationFramework (presentationframework.dll) implements the end-user

presentational features, including layouts, time-

dependent, story-board based animations, and data binding.[6]

WPF exposes a property system for objects which inherit from

DependencyObject, that is aware of the dependencies between the consumers

of the property, and can trigger actions based on changes

in properties. Properties can be either hard coded values

or expressions, which are specific expressions that

evaluate to a result. In the initial release, however, the set of

expressions supported is closed.[6] The value of the

properties can be inherited from parent objects as well. WPF properties

support change notifications, which invoke bound

behaviors whenever some property of some element is changed. Custom behaviors

can be used to propagate a property change notification

across a set of WPF objects. This is used by the layout system to trigger

a recalculation of the layout on property-changes, thus

exposing a declarative programming style for WPF, whereby almost everything,

from setting colors and positions to animating elements

can be achieved by setting properties.[6] This allows WPF applications to be

written

in XAML, which is a declarative mark-up language, by

binding the keywords and attributes directly to WPF classes and properties.

The UI elements of an WPF application is maintained as a class of Visual

objects. Visual objects provide a managed interface to a composition tree

which

Page 124: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

is maintained by Media Integration Layer (MIL). Each

element of WPF creates and adds one or more composition nodes to the tree.

The composition

nodes contain rendering instructions, such as clipping

and transformation instructions, along with other visual attributes. Thus the

entire application

is represented as a collection of composition nodes,

which are stored in a buffer in the system memory. Periodically, MIL walks

the tree and executes the

rendering instructions in each node, thus compositing

each element on to a DirectX surface, which is then rendered on screen. MIL

uses the painter's algorithm,

where all the components are rendered from back of the

screen to the front, which allows complex effects like transparencies to be

easily achieved. This rendering

process is hardware accelerated using the GPU.[6] The

composition tree is cached by MIL, creating a retained mode graphics, so that

any changes to the composition tree

needs only to be incrementally communicated to MIL. This

also frees the applications of managing repainting the screen, MIL can do

that itself as it has all the information

necessary. Animations can be implemented as time-

triggered changes to the composition tree. On the user visible side,

animations are specified declaratively, by setting some

animation effect to some element via a property and

specifying the duration. The code-behind updates the specific nodes of the

tree, via Visual objects, to represent both the

intermediate states at specified time intervals as well

as the final state of the element. MIL will render the changes to the element

automatically.

All WPF applications start with two threads: one for managing the UI and

another background thread for handling rendering and repainting.[7] Rendering

and repainting is managed by WPF itself,

without any developer intervention. The UI thread houses

the Dispatcher (via an instance of DispatcherObject), which maintains a queue

of UI operations that need to be performed

Page 125: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

(as a tree of Visual objects), sorted by priority. UI

events, including changing a property that affects the layout, and user

interaction events raised are queued up in the dispatcher,

which invokes the handlers for the events. Microsoft

recommends that the event handlers only update the properties to reflect new

content for application responsiveness; the new content

be generated or retrieved in a background thread.[7] The

render thread picks up a copy of the visual tree and walks the tree

calculating which components will be visible and renders them

to Direct3D surfaces. The render thread also caches the

visual tree, so only changes to the tree need to be communicated, which will

result in updating only the changed pixels. WPF supports

an extensible layout model. Layout is divided into two

phases: Measure and Arrange. The Measure phase recursively calls all elements

and determine the size they will take. In the Arrange phase,

the child elements are recursively arranged by their

parents, invoking the layout algorithm of the layout module in use.[6][8]

</TextBlock>

</ScrollViewer>

</Expander>

</Grid>

</Window>

.داسای ذس هضتای خبؿ خد هی ثبؽذ Expander ایزبد هی کذ. ش کتشل Expander کذ كم، چبس کتشل

:تیز ارشای کذ كم سا دس ؽکل صیش هؾبذ هی کیذ

Page 126: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

دس ؽکل كم ث ض دلخای عبص هبذی ؽذ Expander وبطس ک هؾبذ هی کیذ، ش یک اص کتشل بی

.اذ داسای هوبدیش ذس هضتای خد هی ثبؽذ

: IsExpanded خبؾیت

:داسای د صبلت هی ثبؽذ Expander سا ؾبى هی دذ. ث هس کلی کتشل Expander ایي خبفیت صبلت کتشل

هشاس هی دیذ. دس ایي صبلت، ثخؼ هضتای False سا ثشاثش ثب IsExpanded صبلت ال: صهبی ک هوذاس خبفیت

.ث فست هخلی دس خاذ آهذ Expander کتشل

دس صبلت وبیؼ هی Expander صبلت دم: ایي صبلت ػکظ صبلت ال هی ثبؽذ. دس ایي صبلت ثخؼ هضتای کتشل

.ثبؽذ

.هی ثبؽذ False ثشاثش ثب IsExpanded کت: هوذاس پیؼ كشك خبفیت

**

:ث فصت صیش هی ثبؽذ XAML ض اعتلبد اص ایي خبفیت دس کذ

:کذ

<Expander . . . IsExpanded="True"> . . . </Expander>

: Expander در کترل Expand هػخؽ کردى جت

هی ثبؽذ ک رت ثبص ثغت ؽذى ExpanderDirection داسای خبفیتی ث بم Expander کتشل

Page 127: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

هی ثبؽذ ک هوذاس Down، Up، Left Right سا هؾخـ هی کذ. ایي خبفیت داساسی چبس هوذاس Expander کتشل

.هی ثبؽذ Down كشك آى ثشاثشا ثبپیؼ

:ث فست صیش هی ثبؽذ XAML ض ث کبس ثشدى ایي خبفیت دس کذ :کذ

<Expander ExpandDirection="Up" . . .>

.

.

.

.

</Expander>

: سا ؾبى هی دذ ExpanderDirection ؽکل صیش، تیز اعتلبد اص ش یک اص چبس هوذاس خبفیت

FlowDirection خبؾیت

صبلت پیؼ كشك آى هی LeftToRight هی ثبؽذ ک هوذاس LeftToRight RightToLeft ایي خبفیت داسای د هوذاس

ثشای صثبى بیی وچى RightToLeft سا ؾبى هی دذ. هوذاس Epander ثبؽذ. ایي خبفیت ض چیذهبى کتشل

.سعی، ػشثی ... ک چیذهبى اللجبی آى ب اص عوت ساعت هی ثبؽذ، هبعت هی ثبؽذكب

ثب علام

..آهبد ؽذ PDF سا دس هبلت كبیل ( WPF ثخؼ ال هطبلت آهصؽی ) هوذه ای ثش

Page 128: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

...ثخؼ بی ثؼذی یض ث تذسیذ آهبد خاذ ؽذ

...هكن ثبؽیذ

كبیل بی مویو

IntroductionToWPF.rar (434.0 ,دیذاس 1418کیلثبیت)

: CLR خاؼ

.ب آؽب هی ثبؽذ Property ش ثشبه یظ دات تی، ثب هلهی ث بم خاؿ یب وبى

:هلبیوی هبذ :کذ

private int age;

public int Age

{

get

{

return age;

}

set

{

age = value;

}

}

دس ایي هغوت، هقذ ثیبى ایي همع سا ک . ( CLR Property) .هی گیذ CLR ث ایي گ خاؿ، افطلاصب خاؿ

ایي خاؿ چ غتذ چگ پیبد عبصی هی ؽذ چشا اص آى ب اعتلبد هی کین، سا ذاسم. ثشای هطبلؼ

.ث لیک صیش هشارؼ کیذ CLR خاؿ

http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx

، رت WPF ذف اص ثضج كم، یک یبداسی دس هسد ایگ خاؿ، هوبیغ آى ب ثب خاؿ رذیذ دس تکلژی

.ف غتذ، هی ثبؽذهؼش Dependency Propertyک ث WPF تؾشیش خاؿ

(Dependency properties) : خاؼ اثطت

دس اختیبس ؽوب، هشاس هی دذ. ایي عشیظ ب CLR عشیظ بی رذیذی سا ثشای گغتشػ خاؿ WPF تکلژی

ثبػج هی ؽد ک ثتایذ اص ایي خاؿ دس هاسد صیبدی اص رول هتضشک عبصی ب، اعتبیل ب، هبلت ب ػولیبت

.هی گیذ Dependency Property ذ کشدى ... اعتلبد کیذ. ث چیي خافی افطلاصبثبی

: CLR خاؼ اثطت خاؼ

دس ظش ثگیشیذ. ایي مع سا اص اثتذای هجبصج CLR دس عبد تشیي صبلت، هی تایذ خاؿ اثغت سا ث هبذ خاؿ

Page 129: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

اصتوبلا ث ایي WPF ذ. ث ػاى هخبل، دس گبم اعتلبد اص خاؿآهصؽی تب ثذیي رب یض، ثب آى ثشخسد داؽت ای

.هی ثبؽذ CLR کت تر کشد ایذ ک سػ اعتلبد اص ایي خاؿ یض هبذ خاؿ

: ث ػاى هخبل د هطؼ کذ صیش هؾبث ن هی ثبؽذ :کذ

Textbox1.Text = "save";

Textbox1.Text = "save";

Dependency یک Text هی ثبؽذ لی دس کذ دم خبفیت CLR یک خبفیت Text س کذ ال، خبفیتثب ایي تلبت ک د

Properrty هی ثبؽذ. اهب اهؼیت ایي اعت ک ایي خاؿ هذست آى ب ثغیبس كشاتش اص ایي همع هی ثبؽذ.

ایي سدی ب ش چیضی هی ایي گ خاؿ هی تاذ هوبدیش خد سا ثش هجبی سدی بی دیگش هضبعج وبیذ.

ب، خایذ دیذ ک چگ ثش هجبی تـیش یک خبفیت، خاؿ دیگش هی Trigger تاذ ثبؽذ. ث ػاى هخبل دس ثضج

.تاذ ث فست اتهبتیک هوبدیش خد سا تظین کشد آى سكتبسی سا اص خد ثشص دذ ک ؽوب اتظبس داسیذ

، عیغتن رذیذی سا دس اػتجبس عزی هوبدیش ث ؽوب اسائ هیػلا ثش ایي، ایگ خاؿ

.دذ

: خاؼ اثطت

، هبثلیت WPF Properties ،دس عیغتن Dependency Property ث ػاى CLR ؽوب هی تایذ، ثب پیبد عبصی خاؿ

.بی ثغیبسی اص رول اسث ثشی، ایویؾي، پؾتیجبی اص اعتبیل ب، هویذ عبصی داد ب ... ث کبس ثشیذ

Dependency property ب ، خافی غتذ ک دس عیغتن WPF Properties تعو هتذ Register حیت ؽذ ،

public تعو کلاعی پیبد عبصی هی ؽد ک دس آى کلاط كیلذی ثب اهنبی Dependency property ثبؽذ. ش

static اص ع Dependency Property رد داسد ک ث آى ؽبع آى خبفیت هی گیذ.

دس Property بم خبفیت، کلو دس بم گزاسی ؽبع ب ایگ ػول هیؾد ک پظ اص

.هی ثبؽذ Background Property ،background اداه آى رکش هی گشدد. ث ػاى هخبل ؽبع خبفیت

.ایي ؽبع، اهلاػبتی سارغ ث خبفیت خد ث گبم حیت ؽذى سا دسى خد گ داسی هی کذ

هبثل اعتلبد هی Dependency object ع بیب تب تعو Dependency property دهت داؽت ثبؽیذ ک

.ثبؽذ

هشاس wpf دس ثبلای شم عبختبسی کلاط ب دس هؼوبسی Dependency object اهب وبطس ک هجلا اؽبس کشدم، کلاط

ب پؾتیجبی Dependency property داسد،. ث ویي دلیل ثغیبسی اص کلاط بی افلی ایي عیغتن هی تاذ اص

.کذ

ب اضتفبد کین؟ Dependency property چرا چ زهبی از

اسث ثشی هی کذ، صبفیتی سا تؼشیق هی کیذ، هی تایذ Dependency object صهبی ک دسى کلاعی ک اص کلاط

غتی پیبد عبصی وبییذ. اهب عال ایي اعت ک آیب ویؾ دس و صبل ثبی Dependency ایي خبفیت سا ث فست

ثب یک CLR اص ایي ع خاؿ اعتلبد کشد؟ یویب راة خیش هی ثبؽذ. دس ثغیبسی اص هاهغ پیبد عبصی یک خبفیت

.كیلذ خقفی کبكی اعت

سا Dependency property اهب ثب ایي صبل، هوکي اعت دس ثؼنی هاهغ یبص ث تؼشیق پیبد عبصی خاؿ ی ؽی

:لیل ثشای تؼشیق ایي خاؿ آسد هی ؽدداؽت ثبؽیذ. دس اداه چذ د

Page 130: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

.ثبؽذ (Templates) هبلت ب (Styles ) صهبی ک هی خایذ، خبفیت ؽوب هبثل هوذاس دی دس اعتبیل ب

.ثبؽذ (Data Bindings) صهبی ک هی خایذ، خبفیت ؽوب هبثل اعتلبد دس هویذ عبصی داد ب

فست اتهبتیک ثتاذ هوذاس خدػ سا اص هوذاسصهبی ک هی خایذ، خبفیت ؽوب ث

.الذ خد اسث ثشی کذ

صهبی ک هی خایذ اص خبفیت خد دس هتضشک عبصی اعتلبد وبییذ. دس اهغ یبص داسیذ

.ک هوذاس خبفیت ؽوب دس یک پشعی ایویؾی هبثل کتشل ثبؽذ

داسیذ، لی دس ثغیبسی اص هاسد هی تایذ ث ربی Dependency اگش چ دس عبسی بی ثبلا، ؽوب یبص ث خاؿ

هرد، ث ذف خد Dependency ؽتي خبفیت بی رذیذ، ثب دثبس ثبص یغی کشدى هتب داد بی خاؿ

.دعت یبثیذ

: Dependency تعریف پیبد ضبزی خاؼ

ثبؽیذ ک ایي چبس هشصل، ی ثبؽذ.دهت داؽتداسای چبس هشصل صیش ه Dependency تؼشیق پیبد عبصی خاؿ

.هشاصل تشتیجی یغتذ. ػلا ثش ایي، ایي هشاصل هبثل اهذام دس یکذیگض یض هی ثبؽذ

.داؽت ثبؽذ null تؼشیق هتب داد ثشای خبفیت. ایي هشصل اختیبسی هی ثبؽذ. هی تاذ دس تؼشیق خبفیت هوذاس

Dependency ث ػاى ؽبع خبفیت . ایي كیلذ ثبیغتی اص ع readonly public static تؼشیق یک كیلذ ثب اهنبی

property ثبؽذ.

.Register تعو هتذ wpf حیت کشدى خبفیت، دس عیغتن

.ثشای خبفیت، ک وبم ثب بم خبفیت هی ثبؽذ (wrapper) ایزبد یک پؽبذ

:هخبل

اسث ثشی هی کذ. هی UserControl ایزبد کشد ایذ. ایي کلاط اص کلاط MyControl كشك کیذ کلاعی ث بم

.ثشای ایي کتشل تؼشیق کین CornerRadius خاین خبفیتی ث بم

:کذ

Public class MyControl :UserControl

{

}

.اثذا ؽبع خبفیت سا تؼشیق هی کین

Page 131: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

:کذ

public static readonly DependencyProperty

CornerRadiusProperty;

CornerRadius بم گزاسی ؽذ اعت ک CornerRadiusProperty وبطس ک هؾبذ هی کیذ، ؽبع ث فست

.بم خبفیت هی ثبؽذ

.اعتلبد هی کین Register دس هشصل ثؼذی هی ثبیغتی خبفیت خد سا حجت کین. ثشای ایي هظساص هتذ

:کذ

DependencyProperty.Register("CornerRadius", typeof

(CornerRadius), typeof(MyControl), new

FrameworkPropertyMetadata (0));

ک یک کلاط هش ؽذ ) دسای Dependency Property اص کلاط Register وبطس ک هؾبد هی کیذ اص هتذ

.هی ثبؽذ، اعتلبد ؽذ اعت (seald اهنبی

.هی ثبؽذ CornerRadiusآسگهبى ال ایي هتذ، بم خبفیت سا هؾخـ هی کذ. دس ایزب بم خبفیت،

آسگهبى دم ع خبفیت سا هؾخـ هی کذ. ع خبفیت وبطس ک هؾبذ هی

.دس ظش گشكت ؽذ اعت CornerRadius کیذ، اص ع

:کت

CornerRadius ک عبختبسی (Structure) دس كنبی بم System.Windows هی ثبؽذ ک ایتشكیظ ژشیک IEquatable

.سا پیبد عبصی هیکذ

خبفیت سا هؾخـ هی کذ. ک دس ایي هخبل، کلاط (owner)آسگهبى عم، هبلک

MyControl هی ثبؽذ.

ؽذ اعت. هوذاس فلش دسى آى، هؼشف هوذاس آسگهبى چبسم، هتب داد ای اعت ک ثشای ایي خبفیت دس ظش گشكت

پیؼ كشك خبفیت، هی ثبؽذ. هاسد دیگشی سا یض هی تایذ دس تؼشیق هتب داد بی یک خبفیت، لضبظ کیذ ک دس

.اداه تمیش داد هی ؽذ

ػلا ثش ایي، وبطس ک پیؼ تش گلت ؽذ، تؼشیق هتب داد ثشای یک صبفیت اختیبسی

.لی تظین آى اؿلت هاسد داسای هضایبیی اعت ک دس اداه خایذ دیذهی ثبؽذ

ث فست ػوین تش، ث آسگهبى دیگشی ک هی تاى ث هتذ FrameworkPropertyMetadata هجل اص ثشسعی آسگهبى

Register پبط داد، هی پشداصین.

ValidateValueCallback:

Page 132: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

هی ValidateValueCallback ای ث بم Delegat تاى پبط داد، و ای اص هی Register آسگهبى دیگشی ک ث هتذ

:داسای تؼشیلی هبذ صیش هی ثبؽذ Delegate ثبؽذ. ایي

:کذ

public delegate bool ValidateValueCallback(object value);

هوذاس دی ؽذ (end user)یهی تاى رت اػتجبس عزی هوذاس خبفیت، ک تعو کبسثش بی Delegate اص ایي

Delegate هؾخـ اعت، ع ثشگؾتی هتذ بیی ک ایي Delegate اعت، اعتلبد کشد. وبطس ک دس اهنبی ایي

هی ثبؽذ. دس اهغ چبچ هوذاس خبفیت، داسای اػتجبس ثبؽذ، هوذاس bool هی تاذ، هشرؼی ثشای آى ب ثبؽذ، اص ع

سا ث ؽکل Register هی ثبؽذ پظ هی تاى ؼشیق هتذ false فست هوذاس ثبصگؾتی دس ؿیش ایي true ثبصگؾتی

:صیش کبهل تش کشد

:کذ

DependencyProperty.Register("CornerRadius", typeof

(CornerRadius), typeof(MyControl), new

FrameworkPropertyMetadata(0), new ValidateValueCallback

(CornerRadiusValidateCallBack));

:ث فست صیش هی ثبؽذ CornerRadiusValidateCallBack ک هتذ :کذ

static bool CornerRadiusValidateCallBack(object value)

{

// write your validastion code here

//

//

// if (value is Valid)

// return true;

// return false;

}

.هشصل آخش پؽبیذى خبفیت هی ثبؽذ

Property Wrapper :

پؽبیذ ؽد تب هبثل CLR دس ایي هش صل ثبیغتی خبفیت ؽوب ث ؽکل یک خبفیت

.هی گیذ property wrapper اعتلبد ثبؽذ. ث ایي خبفیت افطلاصب

:ست صیش هی ثبؽذث ف Dependency ثشای خاؿ wrapper ض تؼشیق یک

:کذ

Page 133: Windows Presentation Foundation WPF ػصܚآ ܖظضل ܒیا صا ܍ساد ...

public CornerRadius CornerRadius

{

get

{

return (CornerRadius)GetValue(CornerRadiusProperty);

}

set

{

SetValue(CornerRadiusProperty, value);

}

}

هسد اعتلبد هشاس هی گیشذ تب خبفیت ؽوب سا Dependency Object تعو کلاط GetValue SetValue هتذ بی

ب، هطوی سا پیبد عبصی کیذ چى هوکي اعت Property Wrapper هوذاس دی کذ. ث ویي دلیل، جبیغتی دس

.ک ب دیذ گشكت ؽذ