تعریف یک ویژگی‌وابسته(DependencyProperty) در WPF

پیش از شروع لازم است تعریفی از ویژگی داشته‌باشیم، یک ویژگی، خاصیت و یا پراپرتی(Property) {در تمامی این مقاله ویژگی به معنی پراپرتی می‌باشد} یک مکانیزم انعطاف‌پذیر برای خواندن، نوشتن و یا محاسبه یک فیلد یا متغیر می‌باشد. ویژگی را به‌گونه‌ای می‌توان استفاده کرد که گویی یک متغیر عمومی است، یعنی مانند تعریف یک متغیرعمومی(Public) در یک کلاس عمل‌می‌کند. اما در متغیرعمومی امکان کنترل داده ورودی وجود ندارد، برای نمونه فرض کنید در کلاس شخص(Person) یک متغیرعمومی از نوع اعداد صحیح برای ورود اطلاعات قد افراد تعریف شده باشد، اما می‌دانیم قد افراد نمی‌تواند بیش از 250سانتیمتر باشد، ولی بدلیل تعریف عمومی آن، امکان کنترل قد برای جلوگیری از ورود اطلاعات نادرست نیست. اما اگر همین متغیر را به‌صورت یک ویژگی تعریف‌کنیم، امکان اعتبارسنجی(Validate) برای آن وجود دارد. در برنامه‌نویسی استاندارد(شاید استاندارد واژه مناسبی برای آن نباشد) وقتی می‌خواهید یک ویژگی تعریف‌کنید نخست یک متغیر خصوصی(Private variable) تعریف‌می‌کنید و با دستورهای Get و Set مقادیر ویژگی را تنظیم(Set) کرده و یا(Get) برمی‌گردانید(به این ویژگی‌ها CLR Property که مخفف Common Language Runtime Property است گفته‌می‌شود).

  • 814
  • 0
ادامه مطلب

بدست‌آوردن تمپلیت ابزارها‌ی تلریک و کنترل‌ها در WPF

زیبایی در طراحی ابزار یکی از صفات بارز در WPF می‌باشد، داشتن کنترل‌هایی همانند کنترل‌های موجود در برنامه‌نویسی فرم‌بیس از نظر کارایی مناسب است اما بدلیل استفاده WPF از دایرکت‌ایکس در پس‌زمینه اگر بتوان کنترل‌های گرافیکی زیباتر و جذاب‌تر با همان کارایی ایجاد کرد کاری‌است بسیار دلچسب. برنامه‌نویس‌هایی که با ابزارها و کنترل‌های تلریک آشنایی دارند, حتما RadToggleSwitchButton را دیده‌اند، یک کنترل زیبا بصورت دکمه خاموش و روشن که مانند کلید لامپ می‌باشد اما همانند یک ToggleButton در WPF عمل‌می‌کند، و یا یک RadPathButton که به شما امکان تهیه یک دکمه(Button) با شکل دلخواه(با استفاده از PathGeometry) را می‌دهد و کارایی آن دقیقا معادل Button در WPF است و یا ابزارهای ساخت منوبار و تولزبار و ... که همگی بصورت بسیار زیبا در تلریک یافت می‌شود. این قابلیت‌ها فقط بدلیل محیط گرافیکی در WPF امکان‌پذیر است. اما برای تهیه هرکدام از این کنترل‌ها باید تمپلیت(Template) آن‌ را ساخت، این‌کار چندان ساده نیست و شاید حتی دربرخی موارد غیرممکن به نظربرسد. اما اگر بشود تمپلیت یک کنترل را بدست‌آورد براحتی می‌توان نمونه مشابه(با کمی تفاوت) ایجاد کرد. در ادامه نحوه بدست‌آوردن تمپلیت یک کنترل دلخواه را خواهید دید.

  • 335
  • 0
ادامه مطلب

نقشه ایران با قابلیت انتخاب استان در WPF

موضوعات : متوسطه, سی‌شارپ, زمل

برای یک برنامه‌نویس بخصوص کسی که می‌خواهد برنامه‌ای برای مدیریت ارشد بنویسد، هیچ چیز مهمتراز نمایش داده‌ها با زیبایی هرچه‌بیشتر و قابلیت فهم بالاتر نیست. مدیریت ارشد همیشه انتظار دارد با یک نگاه تمامی اطلاعات مورد نیازش را بدست‌آورد. برای نمونه، اطلاعات فروش در استان‌ها را هم می‌توان با استفاده از یک جدول نمایش‌داد هم با استفاده از نقشه کشور. نمایش گرافیکی برروی نقشه به‌مراتب زیباتر و قابل فهم‌تر از یک جدول می‌باشد. برنامه‌نویسی هنر است اما از آن مهم‌تر نحوه نمایش و طراحی زیبا و کاربرپسند است. زمانی محیط کار در کامپیوتر سیستم عامل تکست‌بیس(TextBase) به‌نام DOS بود اما عدم زیبایی باعث تغییر محیط سیستم‌عامل به محیطی گرافیکی یعنی همین ویندوز شد که هم زیباست و هم کاربرپسند. در محیط برنامه‌نویسی WPF برای نمایش نیاز به اطلاعات موردنیاز برای دستور PATH داریم. اما از کجا چنین نقشه‌ای بیابیم که اطلاعات موردنیاز ما را داشته باشد. با یک جستجوی ساده متوجه‌می‌شوید که نقشه‌ها با فرمت svg همانی است که نیازداریم. اینگونه نقشه‌ها در اینترنت به فراوانی یافت می‌شود. فقط کافی‌است یک جستجوی ساده انجام‌دهید.

  • 543
  • 0
ادامه مطلب

خواندن داده اکسل و نمایش آن در کامبوباکس به‌همراه عکس در WPF

موضوعات : تخصصی, سی‌شارپ, زمل

خواندن داده برای یک برنامه‌نویس بخصوص اگر بخواهد برنامه‌هایی که برپایه دیتا(دیتابیس) هستند بنویسد بسیار مهم خواهدبود، بخش مهمی از این نوع برنامه‌ها عملیات‌هایی چون جستجو، درج, بروزرسانی‌ و حذف داده‌ها را شامل می‌شوند. این عملیات‌ها اگر با استفاده از اوراکل(Oracle)، اس‌کیوال(SQL) و یا برنامه‌هایی مشابه باشد تا حدود زیادی ساده و راحت است اما اگر داده‌ها در یک فایل متنی یا یک اکسل ذخیره شده‌باشد این‌گونه عملیات‌ها سخت‌تر و مشکل‌تر خواهدبود چرا که ساختار داده خوانده شده، یک ساختار جدولی نیست و امکاناتی چون جستجو، درج، بروزرسانی و حذف را باید توسط برنامه شبیه‌سازی کرد. در اینجا هدف فقط خواندن داده‌ها از یک شیت(Sheet) خاص از یک فایل اکسل است و نمایش آن‌ها درون یک کامبوباکس است، البته می‌خواهیم کامبوباکس‌مان عکس را نیز نشان دهد. در گذشته(منظور برنامه‌های فرم‌بیس) گذاشتن عکس در کامبوباکس مشکلات فراوانی داشت و نیاز به استفاده از APIها بود.

  • 819
  • 0
ادامه مطلب

خواندن فایل‌های عکس از یک فولدر ونمایش در کلیک‌ویو

موضوعات : متوسطه

یکی از مشکلات بر سر راه زیباسازی یک گزارش استفاده از تصویر و نمایش آن می‌باشد. البته با وجود تکنولوژی‌های جدید در برنامه‌نویسی دیگر این‌کار مشکلی به‌ حساب نمی‌آید. فرض کنید که شما می‌خواهید یک گزارش کلیک‌ویو برای یک نرم‌افزار پرسنلی طراحی‌ کنید، نخستین قدم در زیباسازی آن، نمایش تصویر چهره پرسنل است چرا که کاربر گزارش شما فقط با دیدن تصویر حتی بدون دانستن نام شخص می‌تواند به خواسته خود برسد(بخصوص اگر این شخص مدیرعامل و یا مدیر بخش نیروی انسانی باشد و حافظه تصویری نیرومندی هم داشته باشد). در بیشتر مواقع تصاویر در یک فولدر و با فرمت تصویری مانند jpg و png و ... ذخیره می‌شوند، کلیک‌ویو قابلیت خواندن فایل را از درون یک فولدر را دارد،‌ کافیست ارتباطی میان نام فایل و اطلاعات آن شخص در فایل دیتابیس‌مان برقرار کنیم. مثلا یک فیلد که نام فایل تصویر درون آن قرار دارد را در جدول اطلاعات افراد نگهداری کنیم. در این‌جا هدف برقراری این ارتباط نیست بلکه خواندن فایل‌های تصاویر و نمایش آن‌ها در کلیک‌ویو می‌باشد.

  • 588
  • 2
ادامه مطلب

کنترل با امکان جابجایی توسط موس در WPF

برنامه‌نویسان بخصوص کسانی که می‌خواهند برنامه‌هایی مشابه طراحی فرم( Form Builder) و یا ریپورت(Report Builder) در ویژوال‌استودیو یا نرم‌افزارهای مشابه بنویسند لازم دارند که وقتی یک شی یا یک کنترل توسط کاربر به برنامه اضافه می‌شود، کاربر بتواند آن را با استفاده از موس حرکت دهد و مکان آن را با موس مشخص کند. این کار در محیط فرم‌بیس(FormBase) با بکارگیری ایونت‌(Event)های MouseDown، MouseUp و MouseMove برای هر کنترل امکان‌پذیر است. اما در حالت فرم‌بیس شی‌ها و کنترل‌ها همگی درون یک فرم یا یک پانل(Panel) قرار دارند و حرکت درون هردو (فرم یا پانل) با استفاده از تنظیم دو خاصیت(Property) لفت(Left) و تاپ(Top) برای آن کنترل یا شی امکان‌پذیر است. اما در WPF ما پانل‌های مختلفی چون Canvas، Grid و ... داریم که تغییر مکان کنترل‌ها در آن‌ها روش‌های متفاوتی دارند. مثلا در پانل Canvas برای تنظیم محل یک شی باید با استفاده از دستورهای SetLeft و SetTop و بکارگیری خاصیت وابسته(Attached Property) Left و Top محل شی را درون Canvas تغییر داد اما برای Grid لازم است خاصیت Margin را برای آن شی یا کنترل تغییردهیم. در اینجا هدف آموزش نحوه تغییرمکان کنترل در Canvas می‌باشد.

  • 1588
  • 0
ادامه مطلب

ساخت گزارش جدول‌محوری(Pivote Table) در کلیک‌ویو

موضوعات : متوسطه, کلیک‌ویو

گزارش جدول‌محوری یا همان Pivote Table یک گزارش نیرومند برای تحلیل داده‌ها است که امکان محاسبات گسترده را برای گروه‌ یا دسته‌های مختلف داده بوجود آورده است. بیشتر افرادی که به تحلیل داده‌ها، مشغول هستند از این ابزار معروف در صفحه‌گسترده‌ی(Spread Sheet) اکسل استفاده کرده و یا می‌کنند. بیل جلن(Bill Jelen) و مایک الکساندر(Mike Alexander) درکتاب خودشان به نام Pivote Table Data Crunching از پیتو سالاس(Pito Salas) به‌عنوان پدر جدول‌های‌محوری یاد می‌کنند. سالاس در حین کار بر روی مفهومی برای یک برنامه جدید که در نهایت به یک صفحه‌گسترده Lotus Improv منجر شد، متوجه‌شد که صفحات‌گسترده الگوهایی از داده‌ها دارند، و اگر ابزاری باشد که به کاربر کمک کند تا این الگوها را شناسایی کند، به ساخت سریع مدل‌داده پیشرفته کمک می‌کند(برداشت از ویکیپدیا).

  • 337
  • 0
ادامه مطلب

خواندن داده‌ از شیت‌های یک فایل اکسل و ترکیب آن‌ها در یک جدول در کلیک‌ویو

موضوعات : فوق‌تخصصی

بسیاری از شرکت‌ها برای اطلاعات مورد نیازشان از اکسل و شیت‌های آن استفاده می‌کنند. اکسل قابلیت‌های بی‌شماری در نگهداری داده‌ها، آنالیز و ارزیابی آن‌ها دارد. از دستور‌های آماری چون sum و average و ... که با آن‌ها می‌توان اطلاعات آماری چون میانگین و انحراف‌معیار و از این قبیل بدست‌آورد و یا دستورهای lookup که امکان جستجوی داده‌ی خاصی در انبوهی از داده‌ها به ما می‌دهد و یا دستورهای مهندسی که این امکان را فراهم‌می‌کند تا تابع‌های مهندسی مانند تابع بسل و یا عددهای مختلط بر روی داده‌ سلول‌های اکسل بکارگرفت. دراینجا هدف آموزش اکسل نیست اما فرض کنید که در یک شرکت، اطلاعات فروش درون یک فایل اکسل ذخیره شده باشد، البته نه در یک شیت بلکه در چندین شیت مختلف. در گذشته نحوه اتصال به یک فایل اکسل و دریافت اطلاعات از یک شیت(Sheet) را آموزش داده‌ایم. اگر از دو یا چند شیت مجزا(تعداد شیت‌ها محدودباشد) بخواهیم اطلاعات را دریافت کنیم با استفاده از دستورLOAD به تعداد شیت‌ها می‌توان اطلاعات را خواند، اما نکته اینجاست که گاهی تعداد شیت‌ها بسیار زیاد می‌باشد و یا تعداد شیت‌ها متغیر بوده و امکان دارد با گذشت زمان کم و زیاد شود حال چه باید کرد و یا حتی از آن بدتر نام شیت‌ها متغیر باشند(چرا که دستور LOAD از نام شیت استفاده می‌کند). به‌راستی در این وضعیت چه‌باید کرد؟

با یک مثال مسئله بازتر خواهد شد: فرض کنید اطلاعات فروش برای هر بازاریاب در یک شیت جدا ذخیره‌شده باشد و مثلا اگر یک بازاریاب روزی مرخصی بود، هیچ شیتی برای آن بازاریاب در فایل اکسل وجود نخواهد داشت. پس در عمل اگر روزی 5 بازاریاب سرکارباشند ما 5 شیت مجزا داریم و اگر روزی 4 بازاریاب داشته‌باشیم(یکی مرخصی باشد) فقط 4 شیت خواهیم داشت.

  • 1711
  • 3
ادامه مطلب

مقدمه‌ای بر WPF

بنیاد نمایش ویندوز(ترجمه Windows Presentation Foundation یا به اختصار WPF) یک سیستم پیشرفته نمایشی برای سیستم‌عامل ویندوز می‌باشد و چارچوبی است برای ایجاد برنامه‌های خیره‌کننده.  در انجمن دات‌نت یکی از محبوبترین‌ تکنولوژی‌ها در برنامه‌نویسی دسکتاپ می‌باشد. در این مقاله به صورت مختصر درباره این تکنولوژی صحبت خواهم‌کرد. لازم به ذکر است این مقاله گردآوری شده از منابع مختلف از جمله کتاب Pro WPF 4.5 in C# نوشته متیو‌مک‌دونالد، ویکیپدیا و کدپروجکت و ... می‌باشد.

درسال 2006 و با آمدن دات‌نت‌فریمورک 3.0 اولین ورژن از WPF جهت کار عرضه شد(اولین نسخه شد WPF3.0) که آوالون(Avalon) نیز نامیده‌می‌شد. استفاده از دایرکت‌ایکس، توانایی تعریف رابط کاربری با استفاده از زمل(XAML)، خواص وابسته(Dependency Property)، دیتابایندینگ(Data Binding) و استایل و تمپلیت جز قابلیت‌های اصلی WPF می‌باشد که در ادامه به جزء درباره آنها سخن‌گفته‌خواهدشد. به مدت حدود 15 سال فریم‌ورک(FrameWork) ویندوز دو رابط کاربری کاملا جدا از هم داشت که عبارتند از:

  • 576
  • 0
ادامه مطلب

گییج عمودی در WPF با استفاده از ابزارهای تلریک

اگر برنامه‌نویس کامپیوتر باشید و با داده سروکار داشته باشید لزوم گزارش‌گیری را حتما مشاهده نموده‌اید. فرض کنید یک برنامه برای منابع انسانی شرکتی نوشته‌اید و تمامی داده‌های پرسنل شرکت نیز توسط اپراتورها وارد شده، حال اگر نتوانید گزارش‌هایی از اطلاعات واردشده به برنامه را تهیه کرده و به کاربران آن ارائه نمایید، برنامه شما کارایی نخواهد داشت. یا وقتی که اطلاعات مالی شرکت را در برنامه مالی(نرم‌افزار حسابداری) وارد کرده‌اید ولی نمی‌توانید حتی گزارشی از موجودی بانک‌تان را مشاهده نمایید آنگاه آن برنامه برای شما ارزش چندانی ندارد. پس فقط ورود اطلاعات نیست که مهم است بلکه گزارش‌گیری از داده‌ها بخصوص برای کاربران آن نیز اهمیت ویژه دارد. اهمیت گزارش آنگاه مهم‌تر می‌شود که لازم باشد گزارشی به مدیریت ارشد برای تصمیم‌های مهم که می‌تواند سرنوشت شرکت را تغییر دهد ارائه نمایید. در برنامه نویسی با ابزارهایی چون ویژوال‌استودیو(Visual Studio) یا دلفی(Dephi) و ... ابزارهایی همانند ریپورت بیلدر(Report Builder) وجود دارد که به شما در ارائه گزارش کاربری کمک می‌کند، اما برای گزارش‌های مدیریتی چه باید کرد.

ابزارهایی چون کلیک‌ویو و پاوربی‌آی و ... کاملا محیط مخصوص به خود دارند و محیط گزارش‌گیری در آن‌ها از محیط نرم‌افزارنویسی جدا می‌باشد. اما آیا می‌توان محیط گرافیکی زیبایی چون کلیک‌ویو را درون ویژوال‌استودیو وارد کرد. پاسخ بلی هست. شرکت ماکروسافت برای محیط برنامه‌نویسی ویژوال‌استودیو یک پایه گرافیکی به‌نام WPF (کوتاه‌ شده (Windows Presentation Foundation ایجاد کرده‌است.

برنامه‌نویسی در این محیط کاملا با محیط اصلی ویژوال‌استودیو متفاوت است. اما فرض براین است که شما با این محیط آشنایی دارید. البته درآینده حتما آموزش برنامه‌نویسی WPF را ارائه خواهم‌کرد. درادامه نحوه ساخت یک گییج خطی عمودی(Vertical Linear Gauge) را با بکارگیری ابزارهای تلریک(Telerik) فراخواهید گرفت.

  • 504
  • 0
ادامه مطلب