XAML Sort Viewer

Keiho Sakapon edited this page Sep 27, 2016 · 7 revisions

ソート アルゴリズムを可視化します。
MVVM パターンに加えて非同期処理を利用します。上級者向けです。

例えば、次のような実装方法では期待通りの動作をしません。

  • ソートを UI スレッドで実行した場合、周期を短くするとアプリケーションがフリーズします。
  • ReactiveCollection を利用してソートの結果を逐次反映した場合、周期を短くすると処理の順序が保証されなくなります。

実装手順

  1. Visual Studio で新しいプロジェクトを作成します。
    [WPF アプリケーション] を選択します。

  2. NuGet パッケージ マネージャーで ReactiveProperty をインストールします。

  3. ソート アルゴリズムとなる SortHelper.cs を実装します。
    バブル ソート、クイック ソート、マージ ソートを用意します。

  4. Model となる AppModel.cs を実装します。
    値を比較するときに、Thread.Sleep メソッドで一定時間だけ待機します。

  5. ViewModel となる MainViewModel.cs を実装します。
    ソートをバックグラウンド スレッドで実行し、その経過を定期的に UI に反映させます。 コントロールをバインドするためのコレクションとして、ReactiveCollection<int> を利用します。

  6. View となる MainWindow.xaml を実装します。
    最初に、Window.DataContext に MainViewModel のインスタンスを設定します。これによりデータ バインディングができるようになります。

Sort Viewer

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.