[Silverlight] Tips : 境界線なしの Out of Browser アプリケーションでウィンドウ移動する方法

Out of Browser 昇格時のウィンドウスタイル について前のブログで紹介しました。

境界線なしのウィンドウスタイルにすると、アプリケーションのウィンドウ全体でデザインを考えることができると思います。
が、一つ(二つ?)だけちょっとした落とし穴があります。

そのままでは、ウィンドウを移動する手段がないことと、アプリケーションを終了する手段がないことです。
タイトルバーがないんだから当然です。
まずは、ウィンドウを移動する方法を紹介します。と言ってもすごく簡単、定型的。


なにはともあれ、ユーザーがウィンドウを移動するためにドラッグする領域が必要ですね。
UserControl 全体でももちろん制限なく実現できますが、今回はとってもわかりやすく UserControl の上部にそれらしい領域を付けましょうか。

image

こんな感じ。わかりやすすぎ(笑)。

XAML だと、

<UserControl x:Class="OobWinStyle.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="Wheat">
        <Rectangle Name="DragArea" Width="400" Height="51" Stroke="Black" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Top"
                   Fill="MidnightBlue" MouseLeftButtonDown="DragArea_MouseLeftButtonDown" />
    </Grid>
</UserControl>

大体こうなります。もちろん、色やサイズはお好みで。名前もコードとの対応が自分でわかるようならご自由に。


ここでポイントになるのは、ドラッグするための領域とする要素 (今回の場合は Rectangle) のMouseLeftButtonDown イベントハンドラを用意することです。

「あれっ?MouseMove とか MouseLeftButtonUp はいらないの?」と思うかもしれませんが、はい、いりません。

では肝心の MouseLeftButtonDown イベントハンドラの中身はどうなるかというと、以下の通り。

private void DragArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    if (Application.Current.IsRunningOutOfBrowser)
        Application.Current.MainWindow.DragMove();
}

「MainWindow の DragMove を始めます」というだけなんですね、簡単、簡単。

もう一つ注意が必要なのは、当然、ブラウザ内実行では、この領域のドラッグで移動するわけではないので、Application.Current.IsRunningOutOfBrowser プロパティの値を確認すること。

これをブラウザ外で実行してみてください。ちゃんとウィンドウ移動できるはずです。

次回の Tips は(もしかするとウィンドウ移動よりももっと大事な) 境界線なし Out of Browser なアプリケーションを終了する方法です。

広告
カテゴリー: Silverlight タグ: , パーマリンク

[Silverlight] Tips : 境界線なしの Out of Browser アプリケーションでウィンドウ移動する方法 への3件のフィードバック

  1. ピンバック: [Silverlight] Tips : 境界線なしの Out of Browser アプリケーションを終了する方法 « 技術との戯れ

  2. ピンバック: ページが見つかりませんでした « 技術との戯れ

  3. ピンバック: [Silverlight] Tips : 境界線なしの Out of Browser アプリケーションを終了する方法 « 技術との戯れ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中