اول اینکه واقعا دستتون درد نکنه ،وبلاگ بسیار خوبی دارین. و اما در مثالی که آوردین اگر رکوردی select نشه برنامه error میده .پس باید متد canexecute درکلاس DoDecreaseCommand بار اول false برگردونه ولی canexecute فقط یکبار توسط دکمه مورد نظر فراخونی میشه. این مشکل رو چطور باید رفع کرد که در ضمن موقعی که age>60 شد هم کلید غیر فعال شه
وحید نصیری در ۱۳۸۹/۰۵/۰۶ ۱۸:۵۵:۳۲
- بله. اینجا یک بررسی نال بودن آیتم انتخاب شده باید قبل از کم و زیاد کردن مقادیر اضافه شود. - دو breakpoint داخل هر دو متد CanExecute موجود قرار دهید. خواهید دید که به ازای هر بار کلیک بر روی دکمههای متناظر (افزایش یا کاهش)، متد CanExecute مرتبط هم در ابتدا یکبار فراخوانی میشود. - غیرفعال کردن خودکار دکمه را من در این مثال ابتدایی پیاده سازی نکردم و مرتبط است با EventHandler تعریف شدهای به نام CanExecuteChanged. اگر CanExecuteChanged در متدهای CanExecute صدا زده شود این غیر فعال سازی هم رخ خواهد داد. این مثال رو بر اساس توضیحات ذکر شده به روز کردم و از اینجا قابل دریافت است: http://www.box.net/shared/zc27lmyvku
+ کلا در مورد روشهای بهتر Model Validation در قسمت پنجم بیشتر بحث شده است. همچنین در قسمتهای بعد این کلاسهای خام مشتق شده از ICommand با نمونههای بهتر جایگزین میشوند (DelegateCommand و یا RelayCommand).