Domanda

EDIT: Grazie per il link al wiki, penso che fin dalla sua già iniziato lì, è più facile andare lì a controllare. Tuttavia, la domanda qui è anche un bene, in modo da persone che non sono in giro per i forum MSDN arrivare a conoscere il wiki e dove è.

breve domanda:

Hai un esempio di codice Rx che potrebbe aiutare le persone a capire meglio?

vagante lungo con la domanda nascosta:

Ora che il Rx quadro è stato rilasciato, penso che molti di noi sono interessati a ottenere i bit e li provare. Purtroppo non ci sono davvero molti esempi là fuori (dopo una ricerca esaustiva Sono quasi convinto Rx è stato il solo scopo di fare drag su applicazioni WPF).

Non riesco a ricordare esattamente dove era che ho letto o sentito (ho cercato in molti blog e video) che la squadra Rx sembra essere interessato a fare della serie 101 ... quando ottengono abbastanza tempo per farlo ... che aspira praticamente per tutti coloro che vogliono capire e giocare con lui ora (e intendo, quello auto-rispettato sviluppatore non si sente come un bambino con un nuovo giocattolo in caso di nuove tecnologia. come questo viene in su).

Sono personalmente stato dando una prova ora, ma wow ci sono alcuni concetti folli in esso ... solo per avere metodi di nomi come Materialise e Zip mi fa pensare a Teletrasporti e roba da Ritorno al futuro .

Quindi, penso che sarebbe bello se quelli con una maggiore comprensione, aiutato a costruire una raccolta di esempi, ala 101 Linq Esempi che va da uso di base a cose più complesse, e praticamente coprire tutti i metodi e il loro uso, in modo pratico (magari con un po 'di teoria troppo, specialmente dal momento che questo tipo di concetti probabilmente lo richiedeva)

Credo che la sua grande che gli sviluppatori MS richiedono tempo per darci il materiale del genere, ma penso anche che questa comunità è abbastanza buono per iniziare a costruire il nostro materiale, voi non?

È stato utile?

Soluzione

In realtà ho avuto pensieri simili un paio di giorni fa. Abbiamo iniziato i nostri "101 Rx Samples" come un post nel forum Rx MSDN, ma abbiamo dato spostato in un formato Wiki. Non esitate a venire e aggiungere i propri campioni!

101 Rx campioni sulla Rx wiki

Altri suggerimenti

Per cominciare - Ecco una semplice applicazione di disegno, in modo che quando l'utente trascina, tracciamo una linea rossa dalla posizione iniziale del mouse verso il basso per la posizione corrente, e anche una macchia blu nella posizione corrente. Questo è il risultato di hack mia ultima settimana sulla Rx

Un WPF Disegno Demo

E qui è il codice sorgente.

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

leggere il mio post con ulteriori spiegazione qui e Scarica il codice sorgente qui

Spero che questo aiuti

Un'altra risorsa utile può essere il estensioni reattivi (Rx) Koan : 55 esempi progressive per aiutare si impara Rx

http://www.introtorx.com , che come suggerisce il nome sembra essere una sintetica introduzione. Sembra che ci siano un sacco di esempi (molto semplici), step-by-step, in gran parte utilizzando la console per stampare roba.

Ecco la mia variazione sul drag & drop campione da Wes Dyer , per Windows Form (mi piacerebbe fare EnableDragging un metodo di estensione, probabilmente):

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

Un po 'in ritardo, ma se qualcuno di nuovo inciampa su questa domanda, http://rxmarbles.com/ fornisce un modo molto piacevole di visualizzare gli operatori.

E visore Stock esempio su Github entrare descrizione dell'immagine qui

  1. StreamProvider estrae i dati da un server e genera un flusso Rx.NET IObservable.
  2. StreamAggregator aggrega tutti i flussi IObservable e duplica il risultato in un thread di elaborazione centrale.
  3. Le visualizzazioni filtrate l'unico flusso e duplicare il risultato nelle loro discussioni per la visualizzazione.

Tutti i StreamProviders, StreamAggregate, e viste correre nelle loro discussioni. Anche questo è un tipico modello di threading del mondo reale applicazioni stock di visualizzazione.

Questo esempio può anche essere un semplice scheletro di test delle prestazioni per WPF DataGrid. Calcola zecche / secondo elaborati e visualizza sul View.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top