38 votes

101 exemples de Rx

EDIT: Merci pour le lien vers le wiki, je pense que depuis son déjà commencé, il est plus facile d'y aller pour vérifier. Cependant, la question qui se pose ici est également bon, si les gens qui ne sont pas autour de la msdn forums à savoir sur le wiki, et où il est.

Petite Question:

Avez-vous un Exemple de Rx Code qui pourrait aider les gens à mieux la comprendre?

Longue randonnée avec question cachée:

Maintenant que le Rx-cadre a été publié, je pense que beaucoup d'entre nous sont intéressés à obtenir les bits et les essayer. Malheureusement, il ya vraiment pas beaucoup d'exemples (après une recherche exhaustive, je suis presque convaincu Rx a été conçu uniquement pour faire simple Glisser sur des applications wpf).

Je ne me souviens pas exactement où c'est que j'ai lu ou entendu (je suis à la recherche sur de nombreux blogs et vidéos) que le Rx de l'équipe semble être intéressés à faire de 101 série...quand ils obtiennent suffisamment de temps pour le faire... ce qui assez bien suce pour ceux qui veulent comprendre et de jouer avec elle maintenant (et je veux dire, ce que l'auto-respect développeur ne se sent pas comme un gamin avec un nouveau jouet quand une nouvelle technologie. comme cela vient).

J'ai personnellement été de donner un essai aujourd'hui, mais wow il y a quelques fous de concepts... juste pour avoir des méthodes de noms comme Matérialiser et Zip me fait penser à des Téléporteurs et des trucs de Retour vers le Futur.

Donc, je pense que ce serait bien si ceux avec une plus grande compréhension, contribué à construire une collection d'exemples, ala 101 Linq Exemples qui va de l'utilisation de base à des trucs plus complexe, et couvre à peu près toutes les méthodes et de leur utilisation, de manière pratique (peut-être avec un peu de théorie, spécialement depuis ce genre de concepts probablement requise)

Je pense que son grand que MS devs prendre le temps de nous donner du matériel comme ça, mais je pense aussi que cette communauté est assez bon pour commencer à construire notre propre matériel, vous n'avez pas?

27voto

Robert Hencke Points 206

J'ai eu des pensées similaires il y a quelques jours. Nous avons créé notre propre "101 échantillons Rx" dans le forum Rx MSDN, mais nous l’avons depuis transféré au format Wiki. S'il vous plaît n'hésitez pas à venir et ajouter vos propres échantillons!

101 échantillons Rx sur le wiki Rx

13voto

amazedsaint Points 5712

Pour commencer - Ici est une simple application de dessin, de sorte que lorsque l'utilisateur fait glisser, nous traçons une ligne rouge de la première de la souris vers le bas de la position de l'emplacement actuel, et aussi une tache bleue à l'emplacement actuel. C'est le résultat de ma dernière semaine de la bidouille sur le Rx

A WPF Drawing Demo

Et voici le code source.

//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);
                }
                );
        }

Lire mon post avec plus d'explications ici et Télécharger le code source ici

Espérons que cette aide

9voto

avandeursen Points 1597

Une autre ressource utile est le Koans de Reactive Extensions (Rx) : 55 exemples progressifs pour vous aider à apprendre Rx.

5voto

Luciano Points 184

Je lis http://www.introtorx.com , qui, comme son nom l'indique, semble être une introduction concise. Il semble y avoir beaucoup d'exemples (très basiques), étape par étape, utilisant principalement la console pour imprimer des documents.

4voto

Richard Hein Points 6697

Voici ma variante de Wes Dyer sur l' échantillon glisser-déposer pour Windows Forms (je ferais probablement EnableDragging une méthode d'extension):

     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));
    }  
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X