سلام دوست عزیز
ورودتون را به سایت تبریک می گم..
قبل از هر چیز، حتما یک مرتبه قوانین سایت را مطالعه کنید و نیز قوانینی که برای برخی از تاپیک ها، ( مانند WPF) و بسیاری تاپیک های دیگر که با همانگی مدیران بخش مربوطه، اتخاذ می گردد و غالبا در اولین پست تاپیک قرار می گیرد، را نیز سعی کنید رعایت نمایید
پست شما نیز به همین دلیل از خود تاپیک WPF به این قسمت انتقال یافته است
و اما در مورد مباحثی که مطرح کرده اید:
مسلما اینجا یک فروم می باشد و علاوه بر این تاپیک های آموزشی که بر روی نت قرار می گیرند، نمی توانند مانند یک کلاس درس باشند که همه مطالب گفته شود. غالبا در این گونه آموزش ها، خلاصه مطالب گفته می شود، و بقیه زاه به عهده خود خواننده می باشد.
دلیلش هم این هست، جمع آوری مطالب، ترجمه آنها، دسته بندی آنها، نوشتند مثال های تست شده، و موارد دیگر همگی نیاز به وقت دارند، و من و امسال من هم بابت این کگار پولی دریافت نمی کنیم که بخواهیم همه وقتمان را بر روی این موضوع صرف کنیم. پس در حد امکان و وقت، مطالب قرار داده می شوند.
مطالبی که بعضا هنوز شما در مباحث نمی بینید، به این دلیل است که هنوز وقت بیان آن ها فرا نرسیده است. اگر چه، شما همه پست ها را می خواندید، متوجه این موضوع می شدید که مطالبی از جمله DependencyProperty ها، Routed Event ها و بسیاری مطالب دیگر، نیز جزء آموزش قرار خواهند گرفت. البته در زمان خود.
در کل اگر شما پست اول تاپیک را با دقت میخواندید، جواب خیلی از این مطالب را پیدا می کردید.
انشاءالله که شما نیز بتوانید با رعایت قوانین سایت، که نظارت شدیدی نیز از طرف مدیران سایت بر روی آن ها اعمال می شود، به جرگه کاربران دائم و فعال و مفید این سایت بپیوندید.
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
ممنون جناب کیانی درست می فرمایید من خودم در یکی از انجمن ها همین بحث WPF رو مطرح کردم که به علت استقبال کم از ادامه منصرف شدم قبول دارم که بابت اینکار پول نمیگیریم و وقت خودمون رو هدر ندهیم ولی خوب اگه یسری چیزها مطرح بشن به علمی تر شدن مطلب کمک میکنه در مورد DependencyProperty شما بحث AttachedProperty رو مطرح کردید بهتر بود قبلش DependencyProperty و DependencyObject رو معرفی میکردید اینطوری به فهم مطلب کمک شایانی میکرد بهر حال باز هم ممنون خوب شما و امثال شما میتونن به بروزرسانی فرومهای فارسی کمک شایانی بکنند!
آقای کیانی سلام.....
خوب چرا از افرادی که در این زمینه اطلاعاتی دارن و می تونن بهتون کمک کنن کمک نمیگیرید.می دونم که یه درس رو در آن واحد نمیتونه بیش از یک استاد تدریس کنه ولی میتونه مطالب اساتید دیگه رو برای کامل تر شدن مبحثش به کار بگیره......من و امسال من هم بابت این کگار پولی دریافت نمی کنیم که بخواهیم همه وقتمان را بر روی این موضوع صرف کنیم. پس در حد امکان و وقت، مطالب قرار داده می شوند.
اافراد(البته اگه وجود داشته باشن که دارن...) مقاله هاشون رو برای شما pm بدن و شما با دسته بندی و مرتب کردن مطالبشون بحثتون رو ادامه بدید که مشکل وقتتون هم تا حدودی رفع بشه.......
چون به قول دوست عزیزمون جناب WinFx Developer
حالا بروز رسانی فروم که نه چون یه خورده کلیه و دوستان زیادی در این مورد کمک می کنن.همون بروز رسانی مطالب وسیع آموزشی بهتره.......شما و امثال شما میتونن به بروزرسانی فرومهای فارسی کمک شایانی بکنند
موفق باشید.....
Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."
من برای یه جا یه Presentation داشتم در مورد WPF که قرار بود یه مرور کلی در موردش داشته باشم در این Presentation یه مثال هم ارائه شد (اخه مثال بیس بود , بعضی مطالب با مثال توضیح داده میشد) در اولین فرصت اون رو اینجا میزارم امیدوارم مفید باشه!(خیلی از مطالبی که شما در مقالتتون ارائه دادید رو شامل میشه)
سلام
سجاد جان شما هم به ظاهر، اولین پست تاپیک WPF را با دقت نخواندید
من بخشی از اون را اینجا می گذارم
دوستان عزیز، اگر با قرار دادن، مطالب متعدد و حاشیه ای در تاپیک هایی که جنبه آموزشی دارند، مخالفت می شود و توسط مدیران یا پاک می گردد، یا به مکان مناسب تری انتقال پیدا می کنند، به این دلیل نیست که آن تاپیک، ارثیه پدری ایجاد کننده آن می باشد، بلکه صرفا و صرفا به این دلیل است که از هرج و مرج درون تاپیک جلوگیری شود، تا تاپیک مذکور، جنبه آموزشی بودن خودش را از دست ندهد. این موضوع نه تنها شامل تاپیک آموزش WPF بلکه شامل تاپیک های دیگری از جمله تاپیک آموزش سی شارپ که جدیدا دوست خوبم، آقا مسعود، اونو ایجاد کرده اند، و تاپیک های دیگر نیز شامل می شود.
توجه:
دوستانی که مایل به همکاری در زمینه آموزشی WPF دارند، با پیغام خصوصی آمادگی خودشان را اعلام کنند،
موفق و موید باشید
مهدی کیانی
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
پس اگر اموزشی پس
این جمله این رو میرسونه که ما مطلب رو بدیم به اقای کیانی بعد ایشون بزار ادامه تاپیکشون...دوستانی که مایل به همکاری در زمینه آموزشی WPF دارند، با پیغام خصوصی آمادگی خودشان را اعلام کنند،
این درسته بنظر شما؟
جناب مداح خود شما چنین کاری میکنید؟
دلیل این امر را بار ها و بار ها یاداور شدم. اینکه می خواهم، مطالب به صورت سلسله وار و ترتیبی که دارند بیان شوند.. دوست عزیز اگر به پست های تاپیک WPF نکاه کنید، متوجه خواهید شد که هر پست دارای یک عنوان می باشد. مطالب آموزشی به چندین بخش و هر بخش به چندین قسمت تقسیم بندی می شودن و تا مطالب یک بخش کاملا تمام نشود ( در آن حد که برنامه ریزی شده)، مطالب بخش بعدی شروع نخواهند شد.. این جزء قوانین نوشتن می باشد.
شما که انتظار ندارید، که وقتی کتابی راجع به WPF مطالعه می کنید، در فصل اول یک مطلب راجع به مقدمه WPF بخوانید و مطلب بعدی همان فصل در رابطه با Layout ها، مطلب بعدی در رابطه با .....
کمی تامل ...
و نیز اهداف وسیع تری در پشت این آموزش ها می باشد که با همانگی مدیران می باشد و لزومی ندارد که اینجا مطرح گردد
یقینا مطالبی که دوستان برای من خواهند فرستاد، با نام خودشان در تاپیک قرار خواهد گفت!!!
طبیعتا و 100 درصد اگر بنده هم بخواهم به فرض، مطلبی را در ادامه تاپیک آموزش سی شارپ بنویسم، همینطوری صبح که پاشدم، مطلبم را پست نمی کنم. بلکه مطلب را برای ایجاد کننده تاپیک می فرستم. ایشون بر اساس ترتیبی که در آموزش دارند، مطلب بنده را چنانچه صلاح دیدند، به موقع با نام خود من و به دست ایشون در تاپیک درج خواهد شد.. و چنانچه صلاح ندیدند، من می توانم آن مطلب ره در قالب یک مقاله وبا نام خودم در بخش مقالات سایت در اخنیار دوستان قرار دهم.
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
خوب جناب کیانی اگه اجازه ایراد متنتون رو بگم با اجازه;)
1/ 1 فلسفه وجودی WPF در یه جمله خلاصه میشه
در مدلها قبلی WinApp چیزی که طراح میخواست با چیزی که برنامه نویس پیاده سازی میکرد زمین تا اسمون فرق داشت ولی با ظهور WPF و XAML این تفاوت به صفر میرسهDesigner And Developer Work With Together
2/WPF چیزه جدیدی بشما ارائه میده سیستم نمایشی Vector Base هست یعنی همه چیز رو یه Vector میبینه برای همین شما هر چقدر هم رو کنترلها و تصاویز Zoom داشته باشید افت کیفیت رو مشاهده نمیکنید
3/ من این رو قبول ندارم
اگه قرار بود این باشه در SP1 دات نت 3.5 WPF با DirectX یکپارچه نمیشدWPF از تمامی قدرت DirectX جهت ایجاد گرافیک های 2 بعد، 3 بعدی، ایجاد انیمیشن ها، استفاده می کند.
4/در همه جا سازگار نیست مثال در یه Canvas شما یه Button بدون تعیین سایز بده ببین چی بهت نشون میدهیک برنامه نویس WPF حرفه ای حتی المقدور از خواص Width و Height اشیاء برای چیدمان آن ها استفاده نخواهد کرد. یقینا برایتان غیر قابل تصور است. به این دلیل که تا الان هر عنصری که در برنامه خود استفاده کرده اید، پس از نامگذاری آن اقدام به ایجاد سایز مناسب آن نمده اید. اما در نمونه برنامه ها و بخش های آتی خواهید دید، که کمترین استفاده را از این دو خاصیت خواهیم کرد. این موضوع به دلیل ماهیت WPF و غیر وابسته بودن به رزولوشن صفحه نمایش می باشد که در قسمت بعدی بیشتر به شرح آن خواهم پرداخت.
5/این رو رد میکنم در WPF هم باز InitializeComponent وجود داره و دقیقا" کاری شبیه WinApp ها داره برای اطلاع بیشتر توصیه میکنم کتاب Application = Code + Markup رو مطالعه کنید و بحث طراحی در جای دیگه وجود داره اون هم بحث Resource ها و Style ها رو میطلبه اینکه چه جوری یه طراح و برنامه نویس باهم کار میکنن رو بعد از مطالعه دو بحث فوق خواهید یافتطراحی واسط های کاربری در مدل های برنامه نویسی قبل از WPF (برنامه های ویندوزی ) همیشه با بخش کد و منطق برنامه درگیر بوده است. در بهترین حالت، در دات نت فریم ورک 2.0، هر فرم که به عنوان بالاترین آبجکت و به عنوان پدر تمامی آبجکت ها در برنامه های استفاده می شد، دراای دو کلاس مجزا بود.(هست) یکی از این کلاس ها که دارای متدی به نام InitializedComponents بود، (هست). این متد وظیفه طراحی فرم و آبجکت های درون آن را بر عهده داشت. به محض قرار گیری آبجکتی مانند Button بر روی فرم، کدهایی درون متد مذکور به صورت اتوماتیک و توسط خود محیط برنامه نویسی ویژوال استودیو نوشته می شد. این کد ها مربوط به نحوه قرار گیری آبجکت مورد نطر بر روی فرم بود.(هست). و کلاس دیگر معمولا برای کد نویسی و ایجاد منطق برنامه و مشخص کردن عملکرد فم مربوطه و آبجکت های مربوطه به کار می رفت.(می رود). این مسئله ممکن است هیچ ایرادی در یک نگاه سطحی به همراه نداشته باشد. اما در گروه های برنامه نویسی، این یک معضل می باشد. به این دلیل که همیشه طراح با کد نویس درگیر است. این مشکل زمانی بیشتر خود را نشان می دهد که طراح برنامه، ( منظور از طراح، گرافیست برنامه می باشد) از کد نویسی و منطق های برنامه نویسی اطلاعات چندانی نداشته باشد
.
این موضوع با ورود ASP.NET 2.0 و به وجود آمدن مبحث Code Behind که منطق برنامه را از طراحی آن جدا می کرد، تا حدی مرتفع گردید. البته کماکان برای برنامه های ویندوزی هیچ راه حل مناسبی وجود نداشت.
6/XAML هم فکر کنم بشه با گفتن یه جمله ساده به خواننده فهماند
XAML یه زبانه نشانه کذاری هست و در حالت عادی Parse میشه ولی ایا همین برای برنامه نویس WPF کافیه؟XAML is Supper HTML
خیر در XAML شما امکان کد نویسی رو هم دارید ان یکی از امکانات جالب XAML است
برای اطلاعات بیشتر رجوع شود به XAML in Nutshell
7/
این عادت رو باید بهتر کرد اون هم با Resource هاسعی کنید، عادت به استفاده از روش دوم ( روش د ) در تنظیم خواص آبجکت ها کنید. البته این موضوع بیشتر برای زمانی استفاده می شود که بخواهید از خواص پیچیده و ترکیبی برای یک آبجکت استفاده کنید.( این موضوع را کمی جلوتر خواهید دید). ولی به عنوان نمونه برای مثال فوق، بهتر است که از روش ( ج ) به جای روش ( د) استفاده گردد.
8/ جای Markup Extension ها خالیه واقعا" کمبود اونها احساس میشه
منتظر بقیه مطالبتون هستیم با تشکر WinFx
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
لینک کامل مطلب ( لطفا قبل از ایجاد پست، مطالب را با دقت بیشتری مطالعه بفرمایید)
****
در مورد بقیه مطالبتون هم، هنوز مطالب نوشته نشده ....
Resource ها، Markup Extension ها ، Dependency Property ها، Routed Eventها، Style ها، Control template ها، Custom Element ها، 3D ، DataBinding و ... هنوز ارائه نشده اند..
***
ممنون از توجهتون
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
بله در مورد Button و کلا" کنترلهای ContentBase قضیه Height و Weidth با Content سنجیده میشه اگه Content نداشته باشه هیچ چیزی نمیشه ولی مثلا" برای Shape ها دادن Height و Width الزامیست !
اینی که از Height و Width استفاده نکنیم اصلا" پایه و اساس علمی نداریم
یکجا بهتر استفاده نکنیم بهتره استفاده کنیم اون هم به خاطر راحتی کار خودمون هست در Animation هاست که بهتره Height و Weidth ست نشن ! اینکه چی کار کنیم حتما" در ادامه تاپیک بحث میشه
لطفا" کسی پستی رو پاک میکنه علتش رو هم بگه
البته در ایران اینکارها طبیعی هیچ کس برای کاری که میکنه دلیل نداره اگرم کله گنده باشه احساس قدرت کنه که دیگه امکان نداره بگه
دوست عزیز من نمی دونم کجای مطالبم گفتم که هیچ کجا نباید از Width , Heigth استفاده کرد؟
حتی در پست قبل لینک مبحث مربوط به Canvas را دادم.
ولی نمی دونم هدفتون از این بحث ها چیه
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
من منظورتون رو نمیفهمم حتی المقدور استفاده نکنیم ؟ میشه راجب این توضیح بدید یا اینکه متن انگلیسی این رو اینجا بزارید والا تو این یه 8,9 ماهی که دارم با WPF کار میکنم پروژه مینویسم همچین چیزی ندیدمیک برنامه نویس WPF حرفه ای حتی المقدور از خواص Width و Height اشیاء برای چیدمان آن ها استفاده نخواهد کرد. یقینا برایتان غیر قابل تصور است. به این دلیل که تا الان هر عنصری که در برنامه خود استفاده کرده اید، پس از نامگذاری آن اقدام به ایجاد سایز مناسب آن نمده اید. اما در نمونه برنامه ها و بخش های آتی خواهید دید، که کمترین استفاده را از این دو خاصیت خواهیم کرد. این موضوع به دلیل ماهیت WPF و غیر وابسته بودن به رزولوشن صفحه نمایش می باشد که در قسمت بعدی بیشتر به شرح آن خواهم پرداخت.
اینم برنامه ای که گفته بودم
آخرین ویرایش به وسیله Zaparo : شنبه 18 خرداد 1387 در 00:35 صبح
سلام
شاید بهتر باشه پروژه هایی که نوشتین را یه باز نگری دیگه ای بکنید!
یکی از مباحثی که در WPF جزء مباحث پایه ای می باشد، بحث Layout هست، که در واقع در این بحث، کنترل های کانتینر مطزح می شوند. جهت اطلاع در مورد کنترل های کانتینر و مباحث Layout به این لینک مراجعه کنید.
کامل توضیح دادم . نیز بار ها متذکر شدم که انعطاف پذیر ترین و بعترین کنترل کانتینر، کنترل Grid می باشد و به همین دلیل نیز، کنترل پیش فرض فرم ها به عنوان کنترل بیس پنجره ها ( Winds ) ها می باشد.
شما اگر بتوانید از کنترل های کانتینر و کنترل های دیگری نظیر ScrollViewer به خوبی و به جای خود استفاده کنید، در اکثر مواقع که بیش از 95 درصد موارد ( یا شایدم بیشتر) نیاز به سایز بندی کنترل ها، در WPF نخواهید داشت.
به یک مثال ساده توجه کنید:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="Name:" VerticalAlignment="Center"></TextBlock>
<TextBox Grid.Column="1">enter your name here</TextBox>
<TextBlock Grid.Row="1" Text="Email:" VerticalAlignment="Center"></TextBlock>
<TextBox Grid.Row="1" Grid.Column="1">enter your Email here</TextBox>
<ScrollViewer Grid.Row="2" Grid.ColumnSpan="2">
<TextBox TextWrapping="Wrap" AcceptsReturn="True">Your Comment</TextBox>
</ScrollViewer>
<Button Name="btnSend" Grid.Row="3" Grid.Column="0">send comment</Button>
</Grid>
این کد، ساده ترین نمونه ای بود که می تونستم براتون مثال بزنم. از این ساده تر نمیشد. هیچ یک از این کنترل ها، با مقادیر Width و Height مقدار دهی نشده اند. نتیجه این است که فرمی خواهید داشت که در مانتیور های مختلف، با رزولوشن های مختلف به خوبی کار خواهد کرد.
البته در این بین، دو خاصیت Min و Max برای پروپرتی های Width و height استثنا می باشند. که می توانید از آن ها نیز بهره بیاری در سایز بندی کنترل های خود ببرید.
در مورد کدی که در شکلی که در پست قبلیتان فرستادید، باید بگم که اشیایی نظیر Ellipse نیز، در ان ها مقادیر Width و height دادن یک امر طبیعی است.
البته باز هم در روشی که مد نظر شما می باشد، یعنی کدی مانند زیر :
<Canvas>
<Ellipse Fill="Red" Width="100" Height="50"/>
</Canvas>
از لحاظ حرفه ای بودن یا بهتره گم از لحاظ اصولی بودن غلط است و بهتر است که برای اشیاء از کنترل ViewBox استفاده گردد.
دلیلش هم این است که این کنترل، اشیاء درون خودش را بر اساس سایزی که خودش دارد Arrange می کند. و در نتیجا با بزرگتر شدن فرم ، کنترل ViewBox نیز بزرگ شده ( از لحاظ سایز) و در نتیجه اشیاء مشا نظیر Ellipse و ... بهتر نمایش داده می شوند. حال اگر این کنترل با کنترل های کانتینری نظیر Grid و ... مخلوط شود، نتیجه همانی خواهد شد که انتظار می رود.
و در پایان هم ذکر چند نکته به زبان شیرین انگلیسی
نکات دیگری هم در مورد Layout در WPF و کنترل های کانتینر مطرح می باشد که بحث در مورد آن ها از حوصله این تاپیک خارج است
In WPF, layout is determined by the container that you use. Although there are several
containers to choose from, the “ideal” WPF window follows a few key principles:
• Elements (like controls) should not be explicitly sized. Instead, they grow to fit their
content. For example, a button expands as you add more text. You can limit controls to
acceptable sizes by setting a maximum and minimum size.
• Elements do not indicate their position with screen coordinates. Instead, they are
arranged by their container based on their size, order, and (optionally) other information
that’s specific to the layout container. If you need to add whitespace between
elements, you use theMargin property.'
Tip Hard-coded sizes and positions are evil because they limit your ability to localize your interface, and
they make it much more difficult to deal with dynamic content.
پ و :
اگر غلط املایی هست، به بزرگی خودتون ببخشید. 48 ساعته درست نخوابیدم.
موفق باشید
مهدی کیانی
آخرین ویرایش به وسیله Mahdi.Kiani : جمعه 31 خرداد 1387 در 13:57 عصر
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
در جاهایی گه نباید استفاده کرد، با توضیحاتی که دادم ( به پست قبل مراجعه شود)، کاملا علمی و هدفمند و بر اساس، اصول WPF می باشد
هر چیزی منطقی داره و عشقی نیست
آن جایی هم که ست میشود، در بیشتر مواقع راه حل هایی برای بهتر کردن کد نوشته شده وجود دارد.
خیر!
فقط در Animation ها نیست
در پست قبل، نمونه کدی که گذاشتم، هیچ StoryBoard ای وجود نداره !!!
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
مطالب تا قسمت گفته شده ایندکس گذاری شدند که می تونید در ... اینجا .. مشاهده کنید. ( در امضا هم هست- جمله : ایندکس گذاری شد" نیز حاوی لینک مربوطه میباشد)
در بخش ایندکس به پست ها به صورت تکی لینک داده شده است. یعنی هر پست در یک صفحه باز خواهد شد که این موضوع برای دوستانی که اینترنت کم سرعت دارند بسیار مناسب می باشد.
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
با استفاده از مطالب همین سایت یه برنامه ساده نوشتم .شاید برای شما هم کمکی باشه .
http://www.codeproject.com/KB/cs/wpfColors.aspx
آخرین ویرایش به وسیله mdssoft : جمعه 14 تیر 1387 در 17:57 عصر
با سلام وتشکر فراوان به شما آقای کیانی بخاطر مطالب آموزنده شما در مورد wpf من این تایپک از اول تا آخر خوندم هیچ کس مشکلی نداشت!
سوالی که از حضورتون داشتم در بخش دوم قسمت هفتم وقتی خاصیت BackGround را عوض کرده اید وکد دوم رانوشتید که از خاصیت RadialGradientBrush استفاده کرده اید من این کد نوشتم ولی به من error تبدیل نشدن نوع رو میدهد! با تشکر مجدد!
سلام دوست عزیز...
فکر کنم جناب کیانی سرشون شلوغه که چند روزی هست به سایت سری نزدن.2 3 تا سوال دیگه هم پرسیده شده (از جمله سوال خودم) که بی جواب مونده.
شما هم کل کدت رو بذار تا دوستان دیگه اگه می تونن کمکتون کنن.چون کدهایی که در بخش اموزش گذاشته شده مشکلی ندارن.....
Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."
این کدی که نوشتم
<Window x:Class="WpfApplication1.Window1"خطای که میده
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Simple Textbox by wpf" Height="300" Width="300" >
<Grid>
<TextBox>
<TextBox.Name>txtNum1</TextBox.Name>
<TextBox.HorizontalAlignment>Center</TextBox.HorizontalAlignment>
<TextBox.VerticalAlignment>Center</TextBox.VerticalAlignment>
<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>
<TextBox.Foreground>White</TextBox.Foreground>
<TextBox.Text>this is sample TextBox</TextBox.Text>
</TextBox>
</Grid>
</Window>
Cannot implicitly convert type 'System.Windows.Media.RadialGradientBrush' to 'System.Windows.Controls.TextBox'
سلام دوست عزیز....
شما اینطوری بنویس..
<TextBox Name="txtNum1">
<TextBox.HorizontalAlignment>Center</TextBox.HorizontalAlignment>
<TextBox.VerticalAlignment>Center</TextBox.VerticalAlignment>
<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>
<TextBox.Foreground>White</TextBox.Foreground>
<TextBox.Text>this is sample TextBox</TextBox.Text>
</TextBox>
Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."
لطفا به این موضوع رسیدگی بشه ، یکی داره تو این سایت تمام مقالات رو به اسم خودش میزنه :
www.Fu20.com انجمن تخصصي بسوي آينده - مشاهده مبحث - آموزش WPF (مقدماتی تا پیشرفته)
سلام از مقاله ي با ارزش آقاي كياني تشكر مي كنم.
من فعلاً سؤالي واسم پسش نيومده ولي مي خواستم در ترجمه ي بقيه مقاله به آقاي كياني كمك كنم و همون طوري كه گفتيد مي خواستم با PM اين درخواست را بدم اما سايت مي گفت كه آقاي كياني حق انتخاب خودشون رو براي دريافت PM رد كردن و من مجبور شدم اين جوري درخواستم رو اعلام كنم.
اگر آقاي كياني موافق باشن بخش هايي كه بايد ترجمه كنم رو بهم بگن تا شروع كنم.
سلام
منم به نوبه ی خودم از r.kiani جان به خاطر این تاپیک آموزششون، خیلی تشکر میکنم. وسه ی من خیلی مفید بود و کلی مطلب یاد گرفتم. امیدوارم همیشه موفق باشی.
و دو تا هم نکته:
1- از مطلب GroupBox به اینور، دیگه توی ایندکس گزاری ها نیست. اگه درست بشه ممنون میشم.
2- من تا اینجا که خوندم، ندیدم حتی برای یه بار شما از ToolBox استفاده بکنی ولی چندتا فیلم که از سایت WindowClient گرفتم و دیدم، از ToolBox هم استفاده های زیادی می کردن.(علاوه بر کد نویسش)
می خواستم ببینم که شما این مطلب در آینده بهش اشاره می کنی یا اصلا استفاده از تول باکس رو خوب نمیدونی؟
با تشکر
بسمه تعالی
با سلام
از این آموزش مفیدتون خیلی ممنونم
یک سوال داشتم من اگر بخواهم در زمان اجرا تنظیمات کنترل ها رو تغییر بدم چطور باید این کار رو بکنم آیا در کد سی شارپ هم می شه کدXamlنوشت؟
در ضمن در ScrolViewer این طور که دیدم این توابع رو برای اینکه خودمون هم یک اسکرول بار طراحی کنیم گذاشتند ولی یک مشکل اون هم اینه که اندازه اسکرول بار در توابع نبود منظورم اینه که هرچقدر محیط قابل اسکرول نسبت به محیط قابل نمایش بزرگتر باشه میزان اندازه اسکرول بار کوچکتر است آیا برای اون هم تابعب هست یا باید خودمون کاملش کنیم
با تشکر
اضافه شد....
منظورتون از پنجره ToolBox همونیه که عناصر روی اون قرار دادرند؟ مثل Button و ...
فرقی با هم ندارند.. چون در نهایت با Drag کردن کنترل ها، کد های XAML به صورت اتوماتیک براتون تولید می شه..
یک عیب بزرگی که استفاده از پنجره ToolBox داره اینه که طراحی را در حالت نرمال به صورت FixMode براتون انجام میده...گرچه هنوز هم می توانید کد های XAML تولید شده را تغییر دهید. و به صورت Relative Mode ( تا جایی که مقدوره) در بیاریشون... و لی در کل کار کردن با کد های خود XAML را بیشتر ترجیح می دهم.. وجود Intellisence هم که باعث راحتی کار کردن با اون و افزایش سرعت طراحی شده...
علاوه بر این از نرم افزارهایی مانند Blend هم می توانید استفاده کنید که می تونه خیلی چیزا بهتون یاد بده ( نه صرفا طراحی)
در اینجا هم هر کنترلی دارای خاصیت Name می باشد که با تنظیم کردن آن، می توانید از آن برای دسترسی به کنترل ها و خواص آن ها استفاده کنید. و روش کلی کار هم فرقی با WinAPP نداره....
مثال
button1.Background = new SolidColorBrush(Colors.Green);
منظورتون کدام توابع هستند؟
توابعی که برای Scroll کردن موجود می باشند؟
این توابع ربطی به طراحی ندارند..
برای طراحی و تغییر ظاهر کنترل ها، از خاصت Template آن ها استفاده میشه..
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
بسمه تعالی
با سلام
من منظورم این بود که اصلا یک قالب اسکرول برای خودمون طراحی کنیم با اسکرول بار متفاوت کلید های اسکرو متفاوت و... و برای انجام این کار توابع مثلScrolUp();و.. هم کمک می کنه
ولی برای اینکه اندازه اسکرول بار رو بدست بیاریم باید چکار کرد؟
آیا با Template ها می شه همه چیز اسکرول رو عوض کرد می شه یک مثال
در موردTabControl اگر بخواهیم رنگ TabItem ها را وقتی که فعال هستند عوض کنیم باید چکر کنیم
الان من یک برنامه با WFP نوشتم خیلی کنده البته من از Gradiant زیاد استفاده کردم دلیلش چیه من می خواهم برنامه ای بنویسم که در P3هم قابل اجرا باشه ولی الان تو سیستم من که P4 کنده باید چکار کنم
با تشکر
بسمه تعالی
با سلام
چرا نمی شه در WFP Aplication کنترل های مثل ساعت ویستا که در تاپیک زیر می باشد نمی شه اضافه کرد یا راه خاصی داره
https://barnamenevis.org/showth...8C%D9%86%D9%87
در ضمن یک سوال دیگه داشتم من می خواهم چند نمونه قالب طراحی کنم که کاربر با انتخاب آنها کل رنگ در پروژه هام تغییر کنه چطور می تونم به رنگ ها گرادیانت ها و... در XAml متغیر نسبت دهم که با تغییر مقدار آن متغییرها کل رنگ ها تغییر کنه
با تشکر
آخرین ویرایش به وسیله hassan_kahrizy : پنج شنبه 07 شهریور 1387 در 18:16 عصر
سلام برادر
از نوع سوالاتی که مطرح می کنید، اینطور برداشت می کنم که مطالعه اصولی و کاملی در مورد این تکنولوژی نداشتید..
پیشنهادم اینه که قبل از نوشتن پروژه با این ابزار، مطالعه جامعی در مورد آن داشته باشید..
قبلا نیز افردی ادعا کردند که بیش از یک ساله که مشغول نوشتن پروژه هایی با این تکنولوژی هستند، و present هایی را هم در مورد تشریح این تکنولوژی داشتند، در حالی که از ساده ترین و مهم ترین مسائل این تکنولوژی حتی اطلاعای هم نداشتند، چه رسد به استفاده صحیح و درست از آن ها...
به هر حال، در استفاده از این تکنولوژی زمانی موفق خواهید بود، که عمقی مطالب را مطالعه کنید.. و هیچ وقت سعی نکنید که آن را جایگزینی برای WinApp ها تلقی کنید!!!
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
بسمه تعالی
با سلام
من در این زمینه تنها مطالب شما را مطالعه کردم و آن را هم بخوبی مطالعه کرد
من هیچوقت چنین ادعای نکردم شاید 1 هفته نشده که کار با این تکنولوژی رو شروع کردم اون هم به لطف مطالب شما.قبلا نیز افردی ادعا کردند که بیش از یک ساله که مشغول نوشتن پروژه هایی با این تکنولوژی هستند، و present هایی را هم در مورد تشریح این تکنولوژی داشتند، در حالی که از ساده ترین و مهم ترین مسائل این تکنولوژی حتی اطلاعای هم نداشتند، چه رسد به استفاده صحیح و درست از آن ها...
به هر حال، در استفاده از این تکنولوژی زمانی موفق خواهید بود، که عمقی مطالب را مطالعه کنید.. و هیچ وقت سعی نکنید که آن را جایگزینی برای WinApp ها تلقی کنید!!!
موفق باشید
ولی برایم جای سوال داره با وجود توضیحات اجمالی شما آیا پرسیدن از Templateها در حالی که شما هیچ کجا اون رو توضیح ندید عمیق نخوندن مباحثه
یا TabItem رو در مورد تغییر رنگ در حالت انتخابی. شما در هیچ کجای متنتون به اون اشاره نکردید یا حتی اسکرول بار
اگر منبع فارسی سراغ دارید ممنون می شم معرفی کنید
1-در ضمن من یک مثال نوشتم ولی خیلی کنده نمی دونم بخاطر استفاده کردن از گرادیانت هاست یا نه دلیل دیگه ای داره؟
2-من نمی تونم یا استفاده از MediaElemnt فیلم نشون بدم
با تشکر
با سلام
من هم به نوبه خودم از مطالب با ارزش آقای کیانی تشکر می کنم.
من تازه با WPF و WPF Browser application آشنا شدم ولی در همون اول راه یک سوالی برام پیش اومده که اگه لطف کنید ممنون می شم. و اون هم اینه که آیا WPF جایگزینی برای Windows App هست (البته در مورد این گذرا در پست قبلی جواب داده بودید اگه امکان داشته باشه کمی توضیح بدید) و همچنین WPF Browser application ها با ASP.Net ؟
جایی پرسیده بودید که
بله میشه با چند خط کد XAML یه ساعت نوشت (مراجعه شود به ضمیمه پست)چرا نمی شه در WFP Aplication کنترل های مثل ساعت ویستا که در تاپیک زیر می باشد نمی شه اضافه کرد یا راه خاصی داره
در مورد Template شما از Resource ها استفاده بصورتی که به یه منبع بیرونی وصل بشه مثلا" فایل XAML رو از یجایی بخونی یا بزاریش تو یه DLL مثل PresentationFramework.Aero که میتونی فایل areo.xaml رو از توش بخونی و به برنامت تمی شبیه Aero بدی
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2...l/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml">
</Application.Resources>
</Application>
مثلا" میتونی از این استفاده کنی من Aero رو از PersentationFramework.Aero میخونم هر کنترلی که تو برنامه بزاری شبیه به این میشه البته شما باید Resource ها رو هم مطالعه کنی و همینطور Template ها (که احتمالا" بعده ها توضیح داده خواهد شد)
ببین برای تغییر رنگ TabItem احتمالا" میخوای شبیه به Ribbon کار کنی برای این کار هم راه زیادی هست استفاده از Event ها و پروپرتی هایی که برای اینکار تعبیه شدن و همینطور Animation ها (خوب اینم احتمالا" بعده ها توضیح داده خواهد شد)
WPF کلا" نسبت به Windows Form کند تره
کدی که نوشتی رو بزار بررسی کنیم فیلم نشون میده من خودم تست کردم
بسمه تعالی
با سلام
من که سورس کارم رو بالا گذاشتم
درباره ساعت ویستا منظورم این نبود که یک ساعت با WFP بسازم منظورم اینه که یک کامپوننت (مثل ساعت ویستا ) رو چطور می شه بهWFP Application اضافه کرد.
درباره کندی این برنامه ای که من نوشتم خیلی کنده مثلا با رفتن موس روی تب ها تاخیر یک ثانیه ای داره تا به حالت فعال دربیاد ببینید مشخصه
نمی دونم مشکل از چیه احتمال می دم من یک جا اشتباه کرده باشم
با تشکر
اهان حالا فهمیدم چی میخوای ببین دو تا dll رو باید Refrence کنی یکی
C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsFormsIn tegeration.dll
بعدی هم System.Windows.Formds.dll
اینم نمونه کدش
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WindowsForm="clr-namespace:System.Windows.Forms;assembly=System.Win dows.Forms"
Title="Window1" Height="300" Width="300">
<StackPanel>
<WindowsFormsHost>
<WindowsForm:Button Text="I'm Windows Form Button" />
</WindowsFormsHost>
<Button Content="I'm Windows Presentation Foundation Button" />
</StackPanel>
</Window>
فکر میکنم متوجه شدی دقیقا" چی کار باید بکنی
پروژت رو دیدم کند بود خیلی از اون چیزی که دیده بودم فقط شما بحث Template ها رو مطالعه کن کمکت میکنه سورست رو هم یه نگاهی میندازم
اما دوست عزیز NanShekari
WPF به هیچ جه نیمده که جای Windows Form رو بگیره این رو Adam Nathan تو کتاب Windows Presentation Foundation Unleashed توضیح داده
در مورد WPF Borwser Application خیلی با ASP.NET فرق داره
ممنون از راهنمایی که کردید ، اگه امکان داره بیشتر توضیح بدید که مثلا WPF Browser application به چه منظوری به وجود اومده (شاید برای کم کردن فاصله Win app , web app) اگه این طوری هست کجا ها باید ASP کار کرد و کجا ها WPF?
با سپاس
بسمه تعالی
با سلام
نظرتون درباره برنامه Microsoft Expression Blend چیه؟
فکر میکنم این متن کافی باشه
اینم لینک کل مطلبXAML browser applications (XBAPs) combines features of both Web applications and rich-client applications. Like Web applications, XBAPs can be published to a Web server and launched from Internet Explorer. Like rich-client applications, XBAPs can take advantage of the capabilities of WPF. Developing XBAPs is also similar to rich-client development. This topic provides a simple, high-level introduction to XBAP development and underscores where XBAP development is different than standard rich-client development.
http://msdn.microsoft.com/en-us/library/aa970060.aspx
و این
این اخری از ویکیپدیاست
WPF isn't just for building traditional standalone applications. Its deployment model offers both standalone and XAML Browser Applications (XBAP) flavors. The programming model for building either flavor of application is similar.
Standalone applications are those that have been locally installed on the computer using software such as ClickOnce or Windows Installer (MSI) and which run on the desktop. Standalone applications are considered full trust and have full access to a computer's resources. XAML Browser Applications (XBAPs) are programs that are hosted inside a web browser such as Firefox, Opera, or Internet Explorer. Hosted applications run in a partial trust sandbox environment, and are not given full access to the computer's resources and not all WPF functionality is available. The hosted environment is intended to protect the computer from malicious applications. Starting an XBAP (pronounced "ex-bap") from an HTML page or vice versa is seamless (there is no security or installation prompt). Although one gets the perception of the application running in the browser, it actually runs in an out-of-process executable different from the browser. As of the release of.NET Framework 3.0, XBAPs only run in Internet Explorer. With the release of .NET Framework 3.5 SP1 they also run in Mozilla Firefox using the included XBAP extension.
جناب خاریزی برنامه فوق العاده ای خیلی کمک میکنه من خیلی از application های خفن رو دیدم که با Expression Blend ساختن ولی خوب برای شروع کار بهترین گزینه XAMLPad هست شما کدهای XAML رو بنویس بعد بیا رو Expression Blend اتفاقا" تعامل زیبایی هم با Expression Designer داره اگه کاره طراحی UI بر عهدت گذاشتن از جفتش استفاده کن میفهمی چه خبره فکر میکنم یه تاپیک در موردش داشتیم
اقای کیانی سلام.....
هر کاری کردم که از یک پروژه wpf خروجی بگیرم و اون رو در یک WinApp استفاده کنم نتونستم.یعی در اصل می خوام عناصر سفارشی خودم رو با wpf درست کنم و اونو مثل یک ابزار توی WinApp به کار ببرم.میشه کمک کنید؟
ممنون.....
Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."
این مثال رو ببینید:
http://blogs.msdn.com/charles_sterli...31/611414.aspx
موفق باشید
آخرین ویرایش به وسیله Amir Oveisi : شنبه 22 آبان 1389 در 12:51 عصر
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin