画像ファイルを開いて WriteableBitmap にデータを書きこむ
画像ファイルを開いてウインドウに表示するには、WriteableBitmap を経由すれば都合がいいです。それは WriteableBitmap には WritePixels() や CopyPixels() という高速にデータを扱える使いやすいメソッドがあるからです。これらは画像処理するのに非常に都合がいいメソッドです。
下記のコードは、
(0) ファイルに格納されたデータを単なるバイトデータ列として読み出しする。
(1) それを BitmapFrame クラスを用いて画像データとして意味づけをする。
(2) その意味付けされたデータを WriteableBitmap に書き込む。 
という流れです。最終的に WriteableBitmap は XAML で定義済みの Image と関連付けられて、ウインドウに表示されることになります。
下記の名前空間の追加をお忘れなく.
using Microsoft.Win32;
using System.IO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
// この using 追加を忘れずに. Don't forget to add this sentence.
using Microsoft.Win32;
using System.IO;
namespace aaa
{
	public partial class MainWindow : Window
	{
		WriteableBitmap Bmp000;
		public MainWindow()
		{
			InitializeComponent();
		}
		private void menuApplicationQuit_Click( object sender, RoutedEventArgs e )
		{
			// ウインドウを閉じてソフトを終了する.
			this.Close();
		}
		private void menuFileOpen_Click( object sender, RoutedEventArgs e )
		{
			// ファイルを開くダイアログを表示する.
			OpenFileDialog ofd = new OpenFileDialog();
			ofd.Filter = "ALL|*.*|BMP|*.bmp|PNG|*.png|JPEG|*.jpg";
			bool? ret = ofd.ShowDialog();
			if ( ret == false )
			{
				return; // warning.
			}
			// ファイルパスを取得する.
			String filepath = ofd.FileName;
			// ファイルから byte[] に単なるデータとして読み込む.
			byte [] data = File.ReadAllBytes( filepath );
			using ( MemoryStream ms = new MemoryStream( data ))
			{
				// 単なるデータ列を画像ビットマップ形式に再解釈する.
				BitmapSource bms = BitmapFrame.Create( ms );
				// 書き込み可能ビットマップだとなにかと使いやすい.
				Bmp000 = new WriteableBitmap( bms );
				ms.Close();
			}
			// イメージのサイズを画像と同じにする.
			image000.Width = Bmp000.PixelWidth;
			image000.Height = Bmp000.PixelHeight;
			// イメージに関連付ける.
			image000.Source = Bmp000;
			// タイトルバーにファイルパスを、ファイルのサイズを表示する.
			this.Title = String.Format( "{0} ({1}bytes)", filepath, data.Length );
		}
		private void menuFileSave_Click( object sender, RoutedEventArgs e )
		{
			MessageBox.Show( "NOP: menuFileSave_Click();" );
		}
	}
}
サンプルソースを用意しました。上記のコードのコピーペーストでうまく動かない場合にご利用ください。

