2009-11-20 13 views
36

編集:wikiへのリンクをありがとう、私はそこに既に始まって以来、それをチェックアウトするのが簡単だと思います。しかし、ここの質問も良いので、msdnフォーラムの周りにいない人は、wikiとその場所について知ることができます。101 Rxの例

短い質問:

あなたは、人々がそれをよりよく理解するのに役立つ可能性がRxのコードのサンプルを持っていますか?隠された質問と

ロングとりとめ:今

リリースされましたのRxフレームワークという、私たちの多くは、ビットを取得し、それらを試してみたいと思います。残念ながらそこには多くの例はありません(徹底的な検索の後、私はRxがwpfアプリケーションの簡単なドラッグを行うことのみを意味すると確信しています)。

私は、Rxチームが101シリーズをやってみたいと思っていた(私は多くのブログやビデオを見てきました)読んだり聞いた場所を正確に思い出すことはできません。それをする時間...それを理解し、それと遊びたい人のためにかなり嫌なことです(そして、私は、自己尊重の開発者が新しい玩具を持っている子供のように感じることはありません。これが起こります)。

だけジップは私がテレポーターを思わせるマテリアライズようなメソッド名を持っている...私は個人的に今試してみるされてきましたが、すごいことではいくつかのクレイジーな概念がありますに戻るに戻るより複雑なもの、そしてほとんどカバーに基本的な使い方から行く

だから、私はより深い理解を持つものならば、それはいいだろうと思いますが、例のコレクションを構築するのに役立った、101 LINQの例ALAのすべてメソッドとその使用方法を実践的に(おそらく理論の少しでも、特にこれらの種類のコンセプトがおそらく必要とするので)

私はそのMSの開発者が、私はまた、このコミュニティが、私たち自身の素材を作り始めるのに十分だと思います、あなたはいませんか?

+1

ところで、あなたはあなたの投稿を完了するのを忘れました。) –

+0

これは実際の質問ですか、ちょうど散歩ですか? –

+0

あなたの投稿を変更して今質問を含めるようにしてください。 –

答えて

25

に役立ちます。私たちはRx MSDNフォーラムで自分の "101 Rx Samples"を投稿として開始しましたが、その後Wikiフォーマットに移行しました。来て、あなたのサンプルを追加してください!

101 Rx Samples on the Rx wiki

12

ここから始めるには、単純な描画アプリケーションです。ユーザーがドラッグすると、最初のマウスの下の位置から現在の位置に赤い線が描画され、現在の位置に青い点が描画されます。これはA WPF Drawing Demo

Rxの

上の私の最後の週のハックの結果であり、ここではソースコードです。

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

Read my post with further explanation hereDownload the source code here

ホープこれは私が実際に数日前、同様の考えを持っていた

4

ここで、drag & drop sample by Wes Dyer上の私のバリエーションですWindowsフォーム(私はおそらく、拡張メソッドをEnableDragging作ると思います)のために:

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

私はhttp://www.introtorx.comを読んでいます。これは、その名のように、conciご紹介。ほとんど(非常に基本的な)例が段階的に表示されているようですが、主にコンソールを使って印刷物を印刷しています。

+0

例で重くないかもしれませんが、非常に興味深く、価値のある読書に関係なく。 –

1

そしてGithubの enter image description here

  1. SteamProvider上Stock Viewer例では、サーバーを引っ張るとRx.NET IObservableストリームを生成します。
  2. SteamAggregatorはすべてのIObservableストリームを集約し、結果を中央処理スレッドに複製します。
  3. ビューは単一のストリームをフィルタリングし、その結果を表示用の独自のスレッドに複製します。

すべてのStreamProviders、StreamAggregate、およびViewsは、それぞれのスレッドで実行されます。これは、実世界の視聴アプリケーションの典型的なスレッドモデルです。

この例は、WPF DataGridの単純なパフォーマンステストのスケルトンでもあります。処理された秒数を計算し、それをビューに表示します。

3

少し遅れていますが、新しい質問があった場合は、http://rxmarbles.com/はオペレータを視覚化するのに非常に便利です。