WPFTips
いろいろ参考になったTipsやサンプルなどをご紹介します。
[プログラミング][WPF][.NET] WindowクラスとNavigationWindowクラス
WindowクラスはいわゆるベーシックなWindowのクラスです。
それに対して、NavigationWindowクラスというのは、いわゆるブラウザにみられるようなBack,Fowardナビゲーションボタンのついているウィンドウのクラスです。
普通のWindowクラスでも自分でナビゲーションボタンを実装すれば同じことになるのですが、基本的にビルトインでページ履歴管理などがなされる点が違うようです。
NavigationWindowクラスを導入することにより、
- PageをGUIの基本設計単位とすることができる。
- NavigationWindowクラスはPageのコンテナとしてふるまう。
という仕組みが簡単に実現できるようになっています。
言い換えると、ウェブアプリケーションの設計手法をクライアントアプリケーションに簡単に導入・応用できるようになります。
実際にNavigationWindowクラスをVisual Studio2008上で作るには、怪しいですが、下記のような手順でなんとか動きます。
[プログラミング][WPF][.NET] WPFでスプラッシュウィンドウを表示するには?
基本的な議論としては、
- StartupURIにスプラッシュウィンドウのxamlファイルを指定する。
- MainWindowにはコンテナとしてNavigationWindowを指定し、そのコンテンツとしてMainPage.xamlを指定してやる。
という流れになります。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="StartupWindow.xaml" > <Application.MainWindow> <NavigationWindow Source="MainPage.xaml" Visibility="Visible"></NavigationWindow> </Application.MainWindow> </Application>
ただ、NavigationWindowじゃなくて、独自Windowを表示したい!と強くこだわる場合には下記のようにするようです。
ということのようですが、これはアプリケーションクラスと同一の名前空間、アセンブリに存在しないとうまくいかないようです。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml xmlns:local="clr-namespace:WPFSandbox" StartupUri="StartupWindow.xaml" > <Application.MainWindow> <local:MainWindow Visibility="Visible"/> </Application.MainWindow> </Application>
[プログラミング][WPF][.NET] WPFでMDIアプリケーションを作るには?
まず、売り物であるこちらを利用するという手があるようです。
http://www.divelements.co.uk/net/controls/sanddockwpf/
そこまでの金はないっ!という場合には、擬似的にMDIと同じようなナビゲーションを提供して、それを回避するというアイディアとその実装です。
http://karlshifflett.wordpress.com/2008/04/10/wpf-sample-series-wpf-mdi-task-switching/