![]() |
|
[تطبيق شامل] {8} - واجهة Smart - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4) +--- قسم : قسم البرمجة بتقنية WPF (http://vb4arb.com/vb/forumdisplay.php?fid=86) +---- قسم : قسم دورات تقنية WPF (http://vb4arb.com/vb/forumdisplay.php?fid=87) +---- الموضوع : [تطبيق شامل] {8} - واجهة Smart (/showthread.php?tid=19707) |
[تطبيق شامل] {8} - واجهة Smart - الشاكي لله - 19-03-17 السلام عليكم ورحمة الله وبركاته .. الدرس السابق :
ماتم الوصول اليه :
مشاهدة
https://www.youtube.com/watch?v=zwtFLp_ONDw
وارجو المعذرة على رداءة الصوت
RE: [تطبيق شامل] {8} - واجهة Smart - السندبااد - 19-03-17 وعليكم السلام ورحمة الله وبركاته
الأداة بالفعل أصبحت مرنة جداً
لكن عندما قمت بعمل Converter للفاصلة في الدقيقة 16 في الفيديو لم توضح لنا كيف قمت بربطه بأداة TextBlock
ألف شكر لك على الدرس الرائع
RE: [تطبيق شامل] {8} - واجهة Smart - الشاكي لله - 19-03-17 (19-03-17, 11:39 AM)السندبااد كتب : اي والله شكله راح مع التقطيع هههههههه لكن الخطوات معروفة ، نكررها دائما : 1- الذهاب الى الـ TextBlock الخاص بعرض البالانس 2- الذهاب الى خاصية Text الخاصة به ، والضغط على المربع -السحري- الذي بجانب الخاصية في الPropreties menu 3- اختيار Create Databinding 4- اختيار Ancestor Binding من القائمة ثم اختيار BalaceUserControl ثم اختيار خاصية Balance 5- الذهاب الى اسفل الDialog ثم الذهاب الى الـ Converter combobox في الاسفل ، ثم الضغط على Add value Converter ثم واختيار الـclass الخاص بالكونفيرتال المطلوب . وفي هذا الفيديو (الدرس قبل السابق) قمنا بعمل هذه الخطوات في الدقيقة 17:55 https://www.youtube.com/watch?v=28Xe2vUqMCM
RE: [تطبيق شامل] {8} - واجهة Smart - السندبااد - 19-03-17 هذا ما توقعته بالفعل
دروس الأدوات مميزة جداً؛ لأن صنع الأداة يوفر الكثير من العناء والوقت
رغم أن البعض يخاف من صنع الأداة ولكن الدروس بسطت الأمور جداً
أسأل الله تعالى أن يجعل ذلك في صحيفة أعمالك وأن يوفقك لإكمال هذه السلسلة الذهبية
RE: [تطبيق شامل] {8} - واجهة Smart - السندبااد - 23-03-17 أخي الحبيب الشاكي لله لاحظت أنك أشرت في الدرس أنك في الدروس المقبلة ستشرح عمل Chart إن شاء الله
أرجو لو تكرمت علينا أن يكون الدرس شاملاً لكل ما يتعلق بهذه الأداة لأنها مهمة جداً جداً وفي تقنية wpf لا يوجد شرح لعملها إنما يوجد أمثلة جاهزة في الموقع الذي تطبق عليه الدرس وضعوا مثالين لها كما تشاهد [attachment=13610] الأول: يحدد نسبة كل عنصر من العناصر الموجودة ضمن الـ chart إلى المجموعة؛ كنسبة الناجحين في كل محافظة إلى كامل الدولة. الثاني: نسبة العنصر لوحده بشكل عام؛ كعدد الناجحين في المنامة نسبة إلى البحرين. أيضاً تتميز بتغيير اللون والتلميحات والنسبة وغيرها من الخصائص لأن بالفعل الموقع هذا عرض chart مميزة وشاملة أقدر اهتمامك ولكن فقط أحببت التذكير والتنويه RE: [تطبيق شامل] {8} - واجهة Smart - الشاكي لله - 23-03-17 (23-03-17, 02:25 PM)السندبااد كتب : نعم ، وانا متخمس كذلك الى صناعة اداتي الـ Chart بالامس صورت الدرس الثالث من صناعة الاداة الحالية ، ولكن حصلت مشكلة بسببها اوقفت التصوير وللان لم اجد حل هذه المشكلة للاسف ، حيث باعتقادي انها Bug يتعلق بالBinding في الUsercontrolالمشكلة بسيطة وهي عدم استجابة الMultiValue converter في الdesign time بعد ثاني Call لها بحثت ولم اصل الى نتيجة ولا حتى اي تلميح ، فالان انا احاول اكتشاف الحل لهذه المشكلة ، ولكن اعطوني مهلة يومين ان استطعت حلها فبها ، وان لم استطع اعدت التصوير وتجاهلتها . وتحياتي RE: [تطبيق شامل] {8} - واجهة Smart - السندبااد - 23-03-17 أسأل الله تعالى لك التوفيق أستاذي الحبيب وخذ كل وقتك
وبإذن الله تعالى عندما تنشر درس chart سأتابعه جيداً وسأضع لك أي استفسار أو ملاحظة حتى تخرج الأداة بشكل احترافي ومميز في هذا الدرس بقي فقط جزئية (تبديل أعمدة الجريد إلى صفوف) عند تصغير حجم النافذة
RE: [تطبيق شامل] {8} - واجهة Smart - السندبااد - 11-04-17 السلام عليكم ورحمة الله وبركاته
كيف جعلت Datatrigger تدعم الديزاين تايم ؟
RE: [تطبيق شامل] {8} - واجهة Smart - الشاكي لله - 13-04-17 اسف يبدو انني لم اضف السورس للـ Datatrigger المطور ، تم ارافقه في الرد الطريقة هي باستخدام الوراثة من الـ Microsoft.Expression.Interactivity.Core.DataTrigger ثم عمل Override الى دالة OnPropertyChanged وهي دالة تنطلق عند اي تغيير يحصل في احد خصائص الـ object في البليند FrameworkElement.OnPropertyChanged Method - MSDN فيوجد داخل هذي الدالة كودين اساسيين لجعل هذا الترييغر فعال في الـ DesignTime : 1. PHP كود : this.Actions.ToList().ForEach(a => a.Attach(TargetObject)); وظيفته الدوران حول الاكشن المرتبطين بالـ Trigger وعمل Attach لهم للـ TargetObject وهو الـ Control الهدف (مثلا Progressbar) لأن الـ Attach بطبيعة الحال يتم عند تشغيل البرنامج(runtime) وباتالي يتم ربط الاكشن بالكونترول عند التشغيل ولكن ماقبل التشغيل في (Design time) لا يتم الربط بعد وبالتالي احتجنا هذا الكود ووضعناه في OnPropertyChanged خصيصا لانها تنطلق في الـDesign Time كذلك ![]() 2. PHP كود : this.InvokeActions(null); نعرف ان الـTigger وظيفته اطلاق الاكشن ، فهذا الكود ايضا وضغناه اسفل كود Attach ليطلق الاكشن بشكل Force ، اي استدعاء اجباري ، فنعرف ان الـTrigger يقوم باطلاق الاكشن اوتماتيكيا عند تحقق شرط معين ولكن هذا يحصل فقط في الـ Runtime ، اما في الـDesing Time لابد من العنف واجبار الـTrigger على اطلاق الاكشن رغما عنه عند تحقق الشروط ، لذلك ترى الكود كاملا بهذا الاسلوب :PHP كود : protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)وهذه الطريقة يمكنك استعمالها مع بقية الـTrigger وتطويرها بنفس الاسلوب لتدعم الـDesign Time بشرط ان لاتقوم باضافة ConditionList ـ لان الـ Condition يحتاج تطوير ايضا ليدعم الـ DesignTime وتطويره معقد نوعا ما وعند تطويره اساسا ستكون مجبرا على كتابة الـ ConditionList يدويا بـ Xaml ، فلا يمكنك استعمال المربع :
RE: [تطبيق شامل] {8} - واجهة Smart - السندبااد - 30-04-17 شكراً للتوضيح أستاذي العزيز
بخصوص التلوين الأوتوماتيكي للبروجريس بار، يوجد طريقة أخرى، جربتها وقد نجحت وهي طريقة Convert وهي تدعم الديزاين تايم، وهذا هو الكود: PHP كود : Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert |