# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > WPF > مبتدی: معني كلمه x چيست؟؟؟

## santaclaus1989

سلام. در wpf معني x: چيست؟؟؟ مثلا x:name با name چه فرقي داره؟؟؟ يا x:static به چه معنيه؟؟؟ در كل مي خواستم بدونم x: يعني چي؟؟؟ ممنون!!!!! :اشتباه:

----------


## مهدی فرزاد

سلام
http://msdn.microsoft.com/en-us/library/ms752290.aspx

----------


## Amir Oveisi

اول باید بدونید که xmlns چی هست و چه کاربردی داره. xmlns یا xml namespace مفهموم مشابهی با namespace های معمولی داره با این تفاوت که یک یا *چند* تا clr namsespace میتونن داخل یک xmlns قرار داده بشن. شما برای هر کدوم از کلاس هایی که تو کدهای xaml استفاده می کنید، باید namespace مربوط به اون کلاس رو به xaml معرفی کنید. این کار رو توسط keyword ای به نام xmlns انجام میدید.
حالا فرض کنید که تعداد زیادی کلاس رو قراره تو کدهای xaml مورد استفاده قرار بدید که این کلاس ها صرف نظر از اینکه از نظر ما باید تو یک namespace قرار داشته باشند (به دلیل اینکه کارهایی که انجام میدن شبیه هم هست) اما به هر دلیلی، هر کدوم از این کلاس ها ممکنه تو namespace های مختلفی پراکنده باشند. تو این شرایط شما مجبور هستید که کل اون namespace ها رو اضافه کنید به xaml اتون که کار دردسر ساز و وقت گیری هست. برای رفع این مساله، این قابلیت رو فراهم کردن که بشه چند تا namespace رو دسته بندی کرد و یک نام بهش داد و با استفاده از xmlns اون ها رو به xaml معرفی کرد.
حالا میرسیم به x. در واقع x یک prefix هست که به یک xmlns داده شده (مثل نام مستعار) که مجموعه ای از namespace هایی رو که با کدنویسی xaml در ارتباط هستند شامل میشه. به عنوان مثال شما اگر بخواید در Xaml به یک فیلد static از یک کلاس دسترسی داشته باشید، از x:Static استفاده می کنید. یعنی از MarkupExtension ای به اسم Static استفاده می کنید که داخل یکی از namespace هایی قرار داره که توسط xmlns معرفی شده و اسم x بهشون داده شده.
و در مورد x:Name به طور خلاصه میتونم بگم که با استفاده ازش میتونید برای object هایی که در xaml میسازید و دارای خاصیت Name نیستند، Name بدید. ممکنه یک object ای که در یک Animation دارید ازش استفاده می کنید، Name نداشته باشه، اما سیستم Animation تو wpf با استفاده از Name اشیا، بهشون دسترسی پیدا می کنه و اونا رو Animate میکنه. بنابراین برای اینکه این اشیا رو بشناسه از x:Name استفاده میکنه. در واقع اتفاقی که میفته اینه که یک runtime attribute به اون شی شما اضافه میشه که بقیه میتونن با خوندن اون attribute، مقدار x:Name اش رو بخونند.

موفق باشید

----------

