سؤال

تحرير: شكرًا على الرابط إلى الويكي ، أعتقد أنه منذ أن بدأ بالفعل هناك ، من الأسهل الذهاب إلى هناك للتحقق من ذلك. ومع ذلك ، فإن السؤال هنا جيد أيضًا ، لذا فإن الأشخاص الذين لا يدورون حول منتديات MSDN يتعرفون على الويكي وأين هو.

سؤال قصير:

هل لديك عينة من رمز RX يمكن أن تساعد الناس على فهمها بشكل أفضل؟

طويل المتجول مع سؤال خفي:

الآن هذا إطار RX تم إصداره ، وأعتقد أن الكثير منا مهتمون بالحصول على البتات وتجربتها. للأسف ، لا يوجد بالفعل العديد من الأمثلة (بعد بحث شامل ، أنا مقتنع تقريبًا بأن RX كان من المفترض أن يقوم فقط بسحب على تطبيقات WPF).

لا أستطيع أن أتذكر بالضبط أين قرأت أو سمعت (كنت أبحث في العديد من المدونات ومقاطع الفيديو) بأن فريق RX يبدو أنه مهتم بالقيام بسلسلة 101 ... عندما يحصلون على ما يكفي من الوقت للقيام بذلك ... الأمر الذي تمتص إلى حد كبير لأولئك الذين يريدون فهمه واللعب معه الآن (وأعني ، ما لا يشعر المطور المحترم ذاتيًا كطفل لديه لعبة جديدة عند التقنية الجديدة. مثل هذه) .

لقد جربت شخصياً الآن ، لكن واو هناك بعض المفاهيم المجنونة فيه ... فقط للحصول على أسماء أساليب مثل تتحقق و أَزِيز يجعلني أفكر في النابضون والأشياء من العودة إلى المستقبل.

لذلك ، أعتقد أنه سيكون من الرائع أن يكون الشخص ذو الفهم الأكبر ، قد ساعدوا في بناء مجموعة من الأمثلة ، علاء 101 أمثلة LINQ ينتقل ذلك من الاستخدام الأساسي إلى أشياء أكثر تعقيدًا ، ويغطي جميع الأساليب واستخدامها إلى حد كبير ، بطريقة عملية (ربما مع القليل من النظرية أيضًا ، خاصة لأن هذا النوع من المفاهيم قد يتطلب ذلك) على الأرجح)

أعتقد أنه من الرائع أن تستغرق MS Devs وقتًا لتزويدنا بمواد من هذا القبيل ، لكنني أعتقد أيضًا أن هذا المجتمع جيد بما يكفي لبدء بناء موادنا الخاصة ، أليس كذلك؟

هل كانت مفيدة؟

المحلول

كان لدي بالفعل أفكار مماثلة قبل يومين. لقد بدأنا "101 RX عينات" لدينا كمشاركة في منتدى RX MSDN ، لكننا نقلناها منذ ذلك الحين إلى تنسيق ويكي. لا تتردد في المجيء وإضافة العينات الخاصة بك!

101 عينات RX على Rx Wiki

نصائح أخرى

بادئ ذي بدء - إليك تطبيق رسم بسيط ، بحيث عند سحب المستخدم ، نرسم خطًا أحمر من الموضع الأولي للماوس لأسفل إلى الموقع الحالي ، وأيضًا بقعة زرقاء في الموقع الحالي. هذه هي نتيجة اختراق الأسبوع الماضي على RX

A WPF Drawing Demo

وهنا هو رمز المصدر.

//A draw on drag method to perform the draw
void DrawOnDrag(Canvas e)
        {

            //Get the initial position and dragged points using LINQ to Events
            var mouseDragPoints = from md in e.GetMouseDown()
                                  let startpos=md.EventArgs.GetPosition(e)
                                  from mm in e.GetMouseMove().Until(e.GetMouseUp())
                                  select new
                                  {
                                      StartPos = startpos,
                                      CurrentPos = mm.EventArgs.GetPosition(e),
                                  };


            //Subscribe and draw a line from start position to current position
            mouseDragPoints.Subscribe
                (item =>
                {
                    e.Children.Add(new Line()
                    {
                        Stroke = Brushes.Red,
                        X1 = item.StartPos.X,
                        X2 = item.CurrentPos.X,
                        Y1 = item.StartPos.Y,
                        Y2 = item.CurrentPos.Y
                    });

                    var ellipse = new Ellipse()
                    {
                        Stroke = Brushes.Blue,
                        StrokeThickness = 10,
                        Fill = Brushes.Blue
                    };
                    Canvas.SetLeft(ellipse, item.CurrentPos.X);
                    Canvas.SetTop(ellipse, item.CurrentPos.Y);
                    e.Children.Add(ellipse);
                }
                );
        }

اقرأ رسالتي بمزيد من التفسير هنا و قم بتنزيل رمز المصدر هنا

أتمنى أن يساعدك هذا

قد يكون مورد آخر مفيد هو الامتدادات التفاعلية (RX) koans: 55 أمثلة تقدمية لمساعدتك على تعلم RX

انا اقرأ http://www.introtorx.com, ، وهو ما يشير إلى أن الاسم يشير إلى أن مقدمة موجزة. يبدو أن هناك الكثير من الأمثلة (الأساسية للغاية) ، خطوة بخطوة ، معظمها باستخدام وحدة التحكم لطباعة الأشياء.

هذا هو اختلالي في عينة السحب والإفلات من Wes Dyer, ، بالنسبة لنماذج Windows (سأجعل عملية تمديد تمكين ، ربما):

    public Form2()
    {
        InitializeComponent();

        EnableDragging(pictureBox1);
        EnableDragging(button1);
        EnableDragging(this);
    }

    private void EnableDragging(Control c)
    {
        // Long way, but strongly typed.
        var downs = from down in Observable.FromEvent<MouseEventHandler, MouseEventArgs>(
                        eh => new MouseEventHandler(eh), 
                        eh => c.MouseDown += eh,  
                        eh => c.MouseDown -= eh)
                    select new { down.EventArgs.X, down.EventArgs.Y };

        // Short way.
        var moves = from move in Observable.FromEvent<MouseEventArgs>(c, "MouseMove")
                    select new { move.EventArgs.X, move.EventArgs.Y };

        var ups = Observable.FromEvent<MouseEventArgs>(c, "MouseUp");

        var drags = from down in downs
                    from move in moves.TakeUntil(ups)
                    select new Point { X = move.X - down.X, Y = move.Y - down.Y };

        drags.Subscribe(drag => c.SetBounds(c.Location.X + drag.X, c.Location.Y + drag.Y, 0, 0, BoundsSpecified.Location));
    }  

متأخر بعض الشيء ، ولكن إذا كان شخص ما يتعثر في هذا السؤال ، http://rxmarbles.com/ يوفر طريقة لطيفة للغاية لتصور المشغلين.

و عارض الأسهم مثال على جيثبenter image description here

  1. يقوم StreamProvider بسحب البيانات من خادم ويقوم بإنشاء دفق RX.NET iobservable.
  2. يقوم StreamAggregator بتجميع جميع التدفقات القابلة للرسوم وتكرر النتيجة في خيط معالجة مركزي.
  3. تقوم طرق العرض بتصفية الدفق المفرد وتكرار النتيجة في خيوطها الخاصة للعرض.

جميع Streamproviders ، تدفق ، ووجهات النظر تعمل في خيوطها الخاصة. هذا أيضًا نموذج ترابط نموذجي لتطبيقات عرض الأسهم في العالم الحقيقي.

يمكن أن يكون هذا المثال أيضًا هيكلًا عظميًا بسيطًا في اختبار الأداء لـ WPF DataGrid. يقوم بحساب القراد/المعالجة الثانية ويعرضها على العرض.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top