View Full Version : رفتن فوکوس داخل کنترل در یک یوزرکنترل
Elham.M
سه شنبه 31 خرداد 1390, 13:26 عصر
سلام یک فرم دارم که windowاست و داخل آن یک یوزرکنترل دارم که چند تا textboxدر یوزرکنترلم قرار دارد و می خوام در viewmodelاگر textboxخالی یک پیغام بده و فوکوس وارد آن textbox بشه اما از آنجایی که کنترل مورد نظر مستقیم در window نیست بلکه در یک یوزرکنترل قرار دارد فوکوس وارد کنترل نمی شه
اگر کنترل در window باشه مشکلی در viewmodelندارم.
در ضمن در کد بیهایند این مشکل وجود نداره وبدلیل زیاد بودن فرم هام می خوام درviewmodelاین کار رو انجام بدم
کسی میدونه چیکار باید انجام بدم تا این مشکل رفع بشه؟
sinaone1
شنبه 04 تیر 1390, 21:01 عصر
دوست عزیز راهی که به نظر من میرسه اینه که یه Dependency property بسازی برای یوزرکنترلت که مقدار آن از نوع integer است و اگر مقدار اون تغییر کرد به یوزر بگی که فوکس رو روی کنترلی که ایندکس اون دیپندنسی رو داره بندازه
رضا عربلو
یک شنبه 05 تیر 1390, 08:10 صبح
راه اصولیش اینه که برای یوزر کنترلت یک کامند بسازی. و در مواقع لازم اونرو فرا بخونی.
sinaone1
یک شنبه 05 تیر 1390, 13:42 عصر
عزیز Dependency property پیشرفته همون کامندیه که میگی
رضا عربلو
یک شنبه 05 تیر 1390, 15:54 عصر
عزیز Dependency property پیشرفته همون کامندیه که میگی
خوب چرا به جای command نمی گن Advanced Dependency Property؟
بی شک استفاده از dependency property به روشی که شما در بالا بهش اشاره کردید در موارد عدیده ای اشکال دارد. از جمله :
. پیچیده کردن منطق برنامه واینکه اشکال زدایی برنامه تان سخت تر می شود و کدهایتان اسپاگتی تر. (از اشیای مناسب استفاده نکردید و برای اینکه برنامه تان به جلو برود صرفاً کد نوشته اید.)
. بحث encapsulatuion و اینکه سعی کنید محصولتان را طوری بنویسید تا کاربر نهایی به سادگی و بدون نیاز به دانستن اطلاعات اضافی از آن استفاده کند.
. ....
Elham.M
یک شنبه 05 تیر 1390, 17:42 عصر
از آنجایی که تازه کارم وبا dependency Property ها کار نکردم نمی دونم منظورتون ونحوه انجام آن چگونه است ؟یا منظورتان از این که برای
آن commandبنویسم چی؟اگه لطف کنید نمونه کد نشونم بدید ممنون می شم
happy65_sh
دوشنبه 06 تیر 1390, 09:08 صبح
سلام
آقاي عربلو منظورتون از اينكه ميشه command نوشت چيه؟ منم اين مشكل را دارم اگه يكم بيشتر توضيح بديد ممنون ميشم
sinaone1
دوشنبه 06 تیر 1390, 09:21 صبح
سلام آقا منم همینطور نمیدونم Command چیه، منظورتون Command توی VB6 که نیست ؟
ولی دوست عزیز این یه سمپل که دقیقا این کارو میکنه البته Dependency property ننوشتم که ساده باشه ، اگه مشکل داشتی بگو
71645
مهدی فرزاد
دوشنبه 06 تیر 1390, 09:56 صبح
سلام آقا منم همینطور نمیدونم Command چیه، منظورتون Command توی VB6 که نیست ؟
ولی دوست عزیز این یه سمپل که دقیقا این کارو میکنه البته Dependency property ننوشتم که ساده باشه ، اگه مشکل داشتی بگو
71645
Private GI As Integer
Public Property SetFocusChilds As Integer
Get
Return GI
End Get
Set(ByVal value As Integer)
GI = value
'=========================
'set index Controls
GridMain.Children(value).Focus()
'=========================
End Set
End Property
سلام
این چیزی که شما نوشتید Dependency property نیست ، Property سادست که با اون یک خاصیت فکوس برای یوزر کنترل تعریف شده
این نکته رو گفتم تا برای کار بران دیگه ابهام ایجاد نشه
لطفا در پاسخ هاتون بیشتر دقت کنید تا موجب گمراهی کاربران نشود
sinaone1
دوشنبه 06 تیر 1390, 10:28 صبح
آره عزیز ولی منم که نوشتم این Dependency نیست ولی باز هم خیلی ممنون که دوباره این رو متذکر شدید
Elham.M
دوشنبه 06 تیر 1390, 14:51 عصر
ممنون از نمونه برنامه ای که برام گذاشتین امامن پروژه ام رو باwpfنوشتم در ضمن قبلاهم که گفتم در کدبیهایند نباشه بلکه در viemodelبرای آن کد نوشتم و اصلا از کد بیهایند استفاده نمی کنم
در window یک dock panelدارم که از طریق کد نویسی یک userControl(بدلیل زیاد بودن usercontrolها چون قسمت ها ی مشترک بین تمام فرم ها رو در window قرار دادم و غیر مشترک رو در userconrol)به عنوان فرزند dockpanelبه ان اضافه می شود و مثل مثال شما یک usercotrolرو مستقیم در xmlفرم اضافه نکردم
نمونه برنامه wpf اگه دارید یا آشنا هستید برام بزارید ممنون می شم
sinaone1
دوشنبه 06 تیر 1390, 15:30 عصر
عزیز این که گذاشتم WPF هستش و منظورتون از Behind چیه ، منظورتون کدنویسی به زبان دات نت اونه؟
مهدی فرزاد
دوشنبه 06 تیر 1390, 16:04 عصر
ممنون از نمونه برنامه ای که برام گذاشتین امامن پروژه ام رو باwpfنوشتم در ضمن قبلاهم که گفتم در کدبیهایند نباشه بلکه در viemodelبرای آن کد نوشتم و اصلا از کد بیهایند استفاده نمی کنم
در window یک dock panelدارم که از طریق کد نویسی یک userControl(بدلیل زیاد بودن usercontrolها چون قسمت ها ی مشترک بین تمام فرم ها رو در window قرار دادم و غیر مشترک رو در userconrol)به عنوان فرزند dockpanelبه ان اضافه می شود و مثل مثال شما یک usercotrolرو مستقیم در xmlفرم اضافه نکردم
نمونه برنامه wpf اگه دارید یا آشنا هستید برام بزارید ممنون می شم
یکی از مهم ترین فلسفه های MvvM جدایی طراحی برنامه از Code_behind برنامه هست اما این دلیل نمیشه شما برای یوزر کنترل ها خواص مورد نظر رو ایجاد نکنید ( این جدا از طراحی یوزر کنترل نیست ) مثلا ممکنه یک یوزر کنترل خاصیت Text داشته باشه برای اون شما باید خاصیت رو در Code_behind ایجاد کنید و این نقض MVVM نیست
شما به هر شکلی که یوزر کنترل رو به برنامه اضافه کنید به خواص اون در ViewModel دسترسی خواهید داشت
اگر خاصیت شما از نوع Dependency Property باشه قابیلت Bind شدن رو هم داره
البته من نظری در مورد اینکه Command استفاده کنید یا Dependency Property ندارم این مطلب رو برای توضیح
ساخت خاصیت برای یوزر کنترل ها گفتم
درضمن مثال دوست ما با WPF و کد VB.net بود و البته با Vs2010
رضا عربلو
چهارشنبه 08 تیر 1390, 09:14 صبح
طریقه استفاده از کامند همراه با یوزر کنترل را با یک مثال برایتان قرار دادم.
Elham.M
شنبه 18 تیر 1390, 09:01 صبح
من هنوز مشکلم حل نشده منظورتون رو درست نفهمیدم هر چی به نظرم رسید امتحان کردم در ضمن نمونه برنامه شما مشکل من رو حل نکرده می تونید کامل تر توضیح بدید
happy65_sh
یک شنبه 19 تیر 1390, 12:26 عصر
سلام
آقاي عربلو
ضمن تشكر من روشتون را امتحان كردم و خيلي جالب بود اما از منطقش سر در نمي يارم اگه لطف كنيد يكم در موردش توضيح بديد ممنون ميشم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.