WPF ウィンドウの概要WPF Windows Overview

ユーザーは、ウィンドウを通じて Windows Presentation Foundation (WPF) スタンドアロン アプリケーションと対話します。Users interact with Windows Presentation Foundation (WPF) standalone applications through windows. ウィンドウの主な目的は、データを視覚化してユーザーがデータと対話できるコンテンツをホストすることです。The primary purpose of a window is to host content that visualizes data and enables users to interact with data. スタンドアロンの WPF アプリケーションには、Window クラスを使用した独自のウィンドウがあります。Standalone WPF applications provide their own windows by using the Window class. このトピックでは、Window について説明してから、スタンドアロン アプリケーションにおけるウィンドウの作成と管理の基本について説明します。This topic introduces Window before covering the fundamentals of creating and managing windows in standalone applications.

注意

XAML ブラウザー アプリケーション (XBAP) や Loose Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) のページなど、ブラウザーによってホストされる WPF アプリケーションには、独自のウィンドウはありません。Browser-hosted WPF applications, including XAML browser applications (XBAPs) and loose Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) pages, don't provide their own windows. その代わり、Windows Internet Explorer で提供されるウィンドウでホストされます。Instead, they are hosted in windows provided by Windows Internet Explorer. WPF XAML ブラウザー アプリケーションの概要」を参照してください。See WPF XAML Browser Applications Overview.

ウィンドウ クラスThe Window Class

次の図は、ウィンドウの構成パーツを示しています。The following figure illustrates the constituent parts of a window:

ウィンドウ要素を示すスクリーンショット。

ウィンドウは、非クライアント領域とクライアント領域の 2 つに分かれます。A window is divided into two areas: the non-client area and client area.

ウィンドウの "非クライアント領域" は、WPF によって実装され、多くのウィンドウに共通のウィンドウのパーツが含まれます。これらのパーツには次のものがあります。The non-client area of a window is implemented by WPF and includes the parts of a window that are common to most windows, including the following:

  • 境界線。A border.

  • タイトル バー。A title bar.

  • アイコン。An icon.

  • 最小化ボタン、最大化ボタン、および元に戻すボタン。Minimize, Maximize, and Restore buttons.

  • 閉じるボタン。A Close button.

  • ウィンドウを最小化、最大化、元のサイズに戻す、移動、サイズ変更、および閉じるためのメニュー項目を含むシステム メニュー。A System menu with menu items that allow users to minimize, maximize, restore, move, resize, and close a window.

ウィンドウの "クライアント領域" は、ウィンドウの非クライアント領域の内側の領域であり、開発者がメニュー バー、ツール バー、コントロールなどのアプリケーション固有のコンテンツを追加するために使用します。The client area of a window is the area within a window's non-client area and is used by developers to add application-specific content, such as menu bars, tool bars, and controls.

WPF では、ウィンドウは Window クラスでカプセル化され、これを使用して以下の操作を実行できます。In WPF, a window is encapsulated by the Window class that you use to do the following:

  • ウィンドウを表示する。Display a window.

  • ウィンドウのサイズ、位置、および外観を構成する。Configure the size, position, and appearance of a window.

  • アプリケーション固有のコンテンツをホストする。Host application-specific content.

  • ウィンドウの有効期間を管理する。Manage the lifetime of a window.

ウィンドウの実装Implementing a Window

一般的なウィンドウの実装は、外観と動作で構成されます。"外観" では、ユーザーに対するウィンドウの表示方法を定義します。"動作" では、ユーザーがウィンドウと対話するときのウィンドウの動作を定義します。The implementation of a typical window comprises both appearance and behavior, where appearance defines how a window looks to users and behavior defines the way a window functions as users interact with it. WPF では、コードまたは XAMLXAML マークアップを使用して、ウィンドウの外観と動作を実装できます。In WPF, you can implement the appearance and behavior of a window using either code or XAMLXAML markup.

ただし、通常は、次の例に示すように、XAMLXAML マークアップを使用してウィンドウの外観を実装して、分離コードを使用してウィンドウの動作を実装します。In general, however, the appearance of a window is implemented using XAMLXAML markup, and its behavior is implemented using code-behind, as shown in the following example.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.MarkupAndCodeBehindWindow">
  
  <!-- Client area (for content) -->
  
</Window>
using System.Windows;

namespace SDKSample
{
    public partial class MarkupAndCodeBehindWindow : Window
    {
        public MarkupAndCodeBehindWindow()
        {
            InitializeComponent();
        }
    }
}

Imports System.Windows

Namespace SDKSample
    Partial Public Class MarkupAndCodeBehindWindow
        Inherits Window
        Public Sub New()
            InitializeComponent()
        End Sub
    End Class
End Namespace

XAMLXAML マークアップ ファイルと分離コード ファイルを連携させるには、次のことが必要です。To enable a XAMLXAML markup file and code-behind file to work together, the following are required:

  • マークアップの Window 要素に x:Class 属性を含める必要があります。In markup, the Window element must include the x:Class attribute. アプリケーションのビルド時にマークアップ ファイルに x:Class が含まれていると、Microsoft Build Engine (MSBuild) により、x:Class 属性で指定された名前を持つ、Window から派生した partial クラスが作成されます。When the application is built, the existence of x:Class in the markup file causes Microsoft build engine (MSBuild) to create a partial class that derives from Window and has the name that is specified by the x:Class attribute. そのためには、XAMLXAML スキーマ (xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml") に XML 名前空間宣言を追加する必要があります。This requires the addition of an XML namespace declaration for the XAMLXAML schema ( xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ). 生成された partial クラスでは InitializeComponent メソッドが実装されます。このメソッドを呼び出すとイベントが登録され、マークアップで実装されるプロパティが設定されます。The generated partial class implements the InitializeComponent method, which is called to register the events and set the properties that are implemented in markup.

  • 分離コードでは、クラスは、マークアップ内の x:Class 属性で指定されている名前を持つ partial クラスでなければなりません。また、Window から派生する必要があります。In code-behind, the class must be a partial class with the same name that is specified by the x:Class attribute in markup, and it must derive from Window. これによって、分離コード ファイルと、アプリケーションのビルド時にマークアップ ファイル用に生成される partial クラスとが関連付けられます (「WPF アプリケーションのビルド」を参照)。This allows the code-behind file to be associated with the partial class that is generated for the markup file when the application is built (see Building a WPF Application).

  • 分離コードでは、Window クラスによって実装されるコンストラクターで InitializeComponent メソッドが呼び出される必要があります。In code-behind, the Window class must implement a constructor that calls the InitializeComponent method. InitializeComponent は、マークアップ ファイル用に生成された partial クラスによって実装されるもので、イベントの登録と、マークアップで定義されたプロパティの設定を実行します。InitializeComponent is implemented by the markup file's generated partial class to register events and set properties that are defined in markup.

注意

Visual Studio を使用してプロジェクトに新しい Window を追加すると、ここで説明したように、マークアップと分離コードの両方を使用して Window が実装され、マークアップ ファイルと分離コード ファイル間の関連付けの作成に必要な構成が組み込まれます。When you add a new Window to your project by using Visual Studio, the Window is implemented using both markup and code-behind, and includes the necessary configuration to create the association between the markup and code-behind files as described here.

この構成が組み込まれると、XAMLXAML マークアップ内でウィンドウの外観を定義し、分離コード内でウィンドウの動作を実装することに集中できます。With this configuration in place, you can focus on defining the appearance of the window in XAMLXAML markup and implementing its behavior in code-behind. ボタンを含むウィンドウを XAMLXAML マークアップで実装し、そのボタンの Click イベントのイベント ハンドラーを分離コードで実装する例を、次に示します。The following example shows a window with a button, implemented in XAMLXAML markup, and an event handler for the button's Click event, implemented in code-behind.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.MarkupAndCodeBehindWindow">
  <!-- Client area (for content) -->
  <Button Click="button_Click">Click This Button</Button>
</Window>
using System.Windows;

namespace SDKSample
{
    public partial class MarkupAndCodeBehindWindow : Window
    {
        public MarkupAndCodeBehindWindow()
        {
            InitializeComponent();
        }

        void button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Button was clicked.");
        }
    }
}

Imports System.Windows

Namespace SDKSample
    Partial Public Class MarkupAndCodeBehindWindow
        Inherits Window
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
            MessageBox.Show("Button was clicked.")
        End Sub
    End Class
End Namespace

MSBuild 用のウィンドウ定義の構成Configuring a Window Definition for MSBuild

ウィンドウを実装する方法によって、MSBuild を構成する方法が決定されます。How you implement your window determines how it is configured for MSBuild. XAMLXAML マークアップと分離コードの両方を使用して定義したウィンドウの場合:For a window that is defined using both XAMLXAML markup and code-behind:

  • XAML マークアップ ファイルは、MSBuild Page 項目として構成する必要があります。XAML markup files are configured as MSBuild Page items.

  • 分離コード ファイルは、MSBuild Compile 項目として構成されます。Code-behind files are configured as MSBuild Compile items.

これを次の MSBuild プロジェクト ファイルに示します。This is shown in the following MSBuild project file.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ... >  
    ...  
    <Page Include="MarkupAndCodeBehindWindow.xaml" />  
    <Compile Include=" MarkupAndCodeBehindWindow.xaml.cs" />  
    ...  
</Project>  

WPF アプリケーションのビルドの詳細については、「WPF アプリケーションのビルド」を参照してください。For information about building WPF applications, see Building a WPF Application.

ウィンドウの有効期間Window Lifetime

クラスと同様に、ウィンドウにも有効期間があります。有効期間は、ウィンドウが開いて最初にインスタンス化されたときに開始し、アクティブ化と非アクティブ化を経て、最後に閉じられるまで継続します。As with any class, a window has a lifetime that begins when it is first instantiated, after which it is opened, activated and deactivated, and eventually closed.

ウィンドウを開くOpening a Window

ウィンドウを開くには、次の例に示すように最初にインスタンスを作成します。To open a window, you first create an instance of it, which is demonstrated in the following example.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.App"
    Startup="app_Startup">
</Application>
using System.Windows;
namespace SDKSample
{
    public partial class App : Application
    {
        void app_Startup(object sender, StartupEventArgs e)
        {
            // Create a window
            MarkupAndCodeBehindWindow window = new MarkupAndCodeBehindWindow();

            // Open a window
            window.Show();
        }
    }
}

この例では、Startup イベントが発生してアプリケーションが開始するときに MarkupAndCodeBehindWindow がインスタンス化されます。In this example, the MarkupAndCodeBehindWindow is instantiated when the application starts, which occurs when the Startup event is raised.

ウィンドウがインスタンス化されると、Application オブジェクトによって管理されるウィンドウのリストにそのウィンドウへの参照が自動的に追加されます (「Application.Windows」を参照)。When a window is instantiated, a reference to it is automatically added to a list of windows that is managed by the Application object (see Application.Windows). さらに、インスタンス化される最初のウィンドウは、既定で Application によってメイン アプリケーション ウィンドウとして設定されます (「Application.MainWindow」を参照)。Additionally, the first window to be instantiated is, by default, set by Application as the main application window (see Application.MainWindow).

最後に Show メソッドを呼び出すことによってウィンドウが開き、次の図に示すような結果になります。The window is finally opened by calling the Show method; the result is shown in the following figure.

Window.Show の呼び出しによって開いたウィンドウ

Show を呼び出すことによって開いたウィンドウは、モードレス ウィンドウです。これは、ユーザーが同じアプリケーションで他のウィンドウをアクティブ化できるモードでアプリケーションが動作することを意味します。A window that is opened by calling Show is a modeless window, which means that the application operates in a mode that allows users to activate other windows in the same application.

注意

ShowDialog は、ダイアログ ボックスなどのウィンドウをモーダルで開くために呼び出されます。ShowDialog is called to open windows such as dialog boxes modally. 詳細については、「ダイアログ ボックスの概要」を参照してください。See Dialog Boxes Overview for more information.

Show を呼び出すと、ウィンドウでは表示される前に初期化処理が実行され、ユーザーの入力を受け取ることのできるインフラストラクチャが確立されます。When Show is called, a window performs initialization work before it is shown to establish infrastructure that allows it to receive user input. ウィンドウが初期化されると、SourceInitialized イベントが発生し、ウィンドウが表示されます。When the window is initialized, the SourceInitialized event is raised and the window is shown.

簡単な方法として、StartupUri を設定し、アプリケーションの開始時に自動的に開く最初のウィンドウを指定できます。As a shortcut, StartupUri can be set to specify the first window that is opened automatically when an application starts.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.App"
    StartupUri="PlainWindow.xaml" />

アプリケーションが開始したら、StartupUri の値で指定されたウィンドウがモードレスで開きます。内部的には、ウィンドウはその Show メソッドを呼び出すことによって開かれます。When the application starts, the window specified by the value of StartupUri is opened modelessly; internally, the window is opened by calling its Show method.

ウィンドウの所有権Window Ownership

Show メソッドを使用して開いたウィンドウと、そのウィンドウを作成したウィンドウには、暗黙的な関係はありません。ユーザーは、どちらのウィンドウとも、もう一方のウィンドウに関係なく対話できます。つまり、どちらのウィンドウでも次の作業ができます。A window that is opened by using the Show method does not have an implicit relationship with the window that created it; users can interact with either window independently of the other, which means that either window can do the following:

  • もう一方の上に表示する (いずれかのウィンドウの Topmost プロパティが true に設定されている場合を除く)。Cover the other (unless one of the windows has its Topmost property set to true).

  • もう一方のウィンドウに影響を与えずに、最小化/最大化し、元のサイズに戻す。Be minimized, maximized, and restored without affecting the other.

一部のウィンドウには、そのウィンドウを開いたウィンドウとの関係が必要です。Some windows require a relationship with the window that opens them. たとえば、統合開発環境 (IDE) アプリケーションでは、プロパティ ウィンドウやツール ウィンドウのように、一般的に作成元のウィンドウの上に表示されるウィンドウが開く場合があります。For example, an Integrated Development Environment (IDE) application may open property windows and tool windows whose typical behavior is to cover the window that creates them. また、そのようなウィンドウは、必ず作成元のウィンドウと一緒に閉じ、最小化/最大化し、元のサイズに戻す必要があります。Furthermore, such windows should always close, minimize, maximize, and restore in concert with the window that created them. このような関係を確立するには、あるウィンドウが別のウィンドウを "所有" するようにします。そのためには、"所有されているウィンドウ" の Owner プロパティに、"オーナー ウィンドウ" への参照を設定します。Such a relationship can be established by making one window own another, and is achieved by setting the Owner property of the owned window with a reference to the owner window. これを次の例に示します。This is shown in the following example.

// Create a window and make this window its owner
Window ownedWindow = new Window();
ownedWindow.Owner = this;
ownedWindow.Show();
' Create a window and make this window its owner
Dim ownedWindow As New Window()
ownedWindow.Owner = Me
ownedWindow.Show()

所有権が確立されると、次のようになります。After ownership is established:

  • 所有されているウィンドウでは、Owner プロパティの値を検査することによってオーナー ウィンドウを参照できます。The owned window can reference its owner window by inspecting the value of its Owner property.

  • オーナー ウィンドウでは、OwnedWindows プロパティの値を検査することによって、所有するすべてのウィンドウを検出できます。The owner window can discover all the windows it owns by inspecting the value of its OwnedWindows property.

ウィンドウのアクティブ化の防止Preventing Window Activation

表示されてもアクティブにしないことが適切なウィンドウもあります。インターネット メッセンジャーのようなアプリケーションの対話ウィンドウや、電子メール アプリケーションの通知ウィンドウなどです。There are scenarios where windows should not be activated when shown, such as conversation windows of an Internet messenger-style application or notification windows of an email application.

表示されるときにアクティブにしないウィンドウがアプリケーションにある場合は、Show メソッドの初回呼び出し前に、ShowActivated プロパティを false に設定します。If your application has a window that shouldn't be activated when shown, you can set its ShowActivated property to false before calling the Show method for the first time. 結果は次のようになります。As a consequence:

  • ウィンドウはアクティブになりません。The window is not activated.

  • ウィンドウの Activated イベントは発生しません。The window's Activated event is not raised.

  • 現在アクティブなウィンドウは、アクティブのままです。The currently activated window remains activated.

ただし、ユーザーがクライアント領域または非クライアント領域をクリックすると、ウィンドウは直ちにアクティブになります。The window will become activated, however, as soon as the user activates it by clicking either the client or non-client area. この場合、次のようになります。In this case:

  • ウィンドウはアクティブになります。The window is activated.

  • ウィンドウの Activated イベントが発生します。The window's Activated event is raised.

  • 直前にアクティブだったウィンドウは非アクティブになります。The previously activated window is deactivated.

  • その後、ウィンドウの Deactivated イベントと Activated イベントが、ユーザーの操作への応答として想定どおりに発生します。The window's Deactivated and Activated events are subsequently raised as expected in response to user actions.

ウィンドウのアクティブ化Window Activation

ウィンドウを最初に開いたときは、そのウィンドウがアクティブ ウィンドウになります (ShowActivatedfalse に設定されている場合を除く)。When a window is first opened, it becomes the active window (unless it is shown with ShowActivated set to false). "アクティブ ウィンドウ" は、キー ストロークやマウス クリックなどのユーザー入力を現在キャプチャしているウィンドウです。The active window is the window that is currently capturing user input, such as key strokes and mouse clicks. ウィンドウがアクティブになると、Activated イベントが発生します。When a window becomes active, it raises the Activated event.

注意

ウィンドウが最初に開かれるとき、Loaded イベントと ContentRendered イベントは、Activated イベントが発生した後にのみ発生します。When a window is first opened, the Loaded and ContentRendered events are raised only after the Activated event is raised. そのため、事実上、ウィンドウは ContentRendered が発生した場合にのみ開いたと見なすことができます。With this in mind, a window can effectively be considered opened when ContentRendered is raised.

ウィンドウがアクティブになった後で、ユーザーは同じアプリケーションの別のウィンドウをアクティブ化したり、別のアプリケーションをアクティブ化したりできます。After a window becomes active, a user can activate another window in the same application, or activate another application. このとき、現在アクティブなウィンドウが非アクティブ化され、Deactivated イベントが発生します。When that happens, the currently active window becomes deactivated and raises the Deactivated event. 同様に、ユーザーが現在非アクティブなウィンドウを選択すると、ウィンドウは再びアクティブになり、Activated が発生します。Likewise, when the user selects a currently deactivated window, the window becomes active again and Activated is raised.

一般に、ActivatedDeactivated を処理するのは、ウィンドウがアクティブなときにのみ実行できる機能を有効または無効にするためです。One common reason to handle Activated and Deactivated is to enable and disable functionality that can only run when a window is active. たとえば、ゲームやビデオ プレーヤーなど、ユーザーの一定の入力や介入が必要な対話型コンテンツが表示されるウィンドウがあります。For example, some windows display interactive content that requires constant user input or attention, including games and video players. この動作を実装するために ActivatedDeactivated を処理する方法を、次の簡単なビデオ プレーヤーの例で示します。The following example is a simplified video player that demonstrates how to handle Activated and Deactivated to implement this behavior.

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.CustomMediaPlayerWindow"
    Activated="window_Activated"
    Deactivated="window_Deactivated">

    <!-- Media Player -->
    <MediaElement 
      Name="mediaElement" 
      Stretch="Fill" 
      LoadedBehavior="Manual" 
      Source="numbers.wmv" />

</Window>
using System;
using System.Windows;

namespace SDKSample
{
    public partial class CustomMediaPlayerWindow : Window
    {
        public CustomMediaPlayerWindow()
        {
            InitializeComponent();
        }

        void window_Activated(object sender, EventArgs e)
        {
            // Recommence playing media if window is activated
            this.mediaElement.Play();
        }

        void window_Deactivated(object sender, EventArgs e)
        {
            // Pause playing if media is being played and window is deactivated
            this.mediaElement.Pause();
        }
    }
}

Imports System.Windows

Namespace SDKSample
    Partial Public Class CustomMediaPlayerWindow
        Inherits Window
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub window_Activated(ByVal sender As Object, ByVal e As EventArgs)
            ' Recommence playing media if window is activated
            Me.mediaElement.Play()
        End Sub

        Private Sub window_Deactivated(ByVal sender As Object, ByVal e As EventArgs)
            ' Pause playing if media is being played and window is deactivated
            Me.mediaElement.Pause()
        End Sub
    End Class
End Namespace

ウィンドウが非アクティブでも、バックグラウンドでコードを実行できる種類のアプリケーションもあります。Other types of applications may still run code in the background when a window is deactivated. たとえば、メール クライアントは、ユーザーが他のアプリケーションを使用している間もメール サーバーへのポーリングを続けています。For example, a mail client may continue polling the mail server while the user is using other applications. このようなアプリケーションは、メイン ウィンドウが非アクティブのときにも、別の動作や追加の動作を頻繁に実行します。Applications like these often provide different or additional behavior while the main window is deactivated. メール プログラムでは、新しいメール アイテムを受信トレイに追加し、通知アイコンをシステム トレイに追加することがあります。With respect to the mail program, this may mean both adding the new mail item to the inbox and adding a notification icon to the system tray. 通知アイコンは、メール ウィンドウがアクティブでないときにのみ表示する必要があります。メール ウィンドウがアクティブかどうかは、IsActive プロパティを検査することで確認できます。A notification icon need only be displayed when the mail window isn't active, which can be determined by inspecting the IsActive property.

バックグラウンド タスクの完了時に、ユーザーに緊急に通知する必要がある場合は、Activate メソッドを呼び出します。If a background task completes, a window may want to notify the user more urgently by calling Activate method. Activate を呼び出したときに、ユーザーが別のアクティブなアプリケーションと対話している場合は、ウィンドウのタスク バー ボタンが点滅します。If the user is interacting with another application activated when Activate is called, the window's taskbar button flashes. ユーザーが現在のアプリケーションと対話している場合は、Activate を呼び出すと、ウィンドウが前面に表示されます。If a user is interacting with the current application, calling Activate will bring the window to the foreground.

注意

Application.Activated イベントと Application.Deactivated イベントを使用して、アプリケーションスコープのアクティベーションを処理できます。You can handle application-scope activation using the Application.Activated and Application.Deactivated events.

ウィンドウを閉じるClosing a Window

ウィンドウの有効期間は、表示されたときに開始し、ユーザーが閉じたときに終了します。The life of a window starts coming to an end when a user closes it. ウィンドウを閉じるには、非クライアント領域の要素を使用します。これには、次のものが含まれます。A window can be closed by using elements in the non-client area, including the following:

  • [システム] メニューの [閉じる] 項目。The Close item of the System menu.

  • Alt キーを押しながら F4 キーを押す。Pressing ALT+F4.

  • [閉じる] ボタンを押す。Pressing the Close button.

クライアント領域にさらに機構を追加してウィンドウを閉じることもできます。その一般的な例を、次に示します。You can provide additional mechanisms to the client area to close a window, the more common of which include the following:

  • 一般にメイン アプリケーション ウィンドウにある、 [ファイル] メニューの [終了] 項目。An Exit item in the File menu, typically for main application windows.

  • 一般にアプリケーションの 2 次ウィンドウにある、 [ファイル] メニューの [閉じる] 項目。A Close item in the File menu, typically on a secondary application window.

  • 一般にモーダル ダイアログ ボックスにある [キャンセル] ボタン。A Cancel button, typically on a modal dialog box.

  • 一般にモードレス ダイアログ ボックスにある [閉じる] ボタン。A Close button, typically on a modeless dialog box.

これらのカスタム機構のいずれかに対応してウィンドウを閉じるには、Close メソッドを呼び出す必要があります。To close a window in response to one of these custom mechanisms, you need to call the Close method. [ファイル] メニューの [終了] をクリックすることでウィンドウを閉じる機能を実装する方法を、次の例に示します。The following example implements the ability to close a window by choosing the Exit on the File menu.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.WindowWithFileExit">
  
  <Menu>
    <MenuItem Header="_File">
      <MenuItem Header="E_xit" Click="fileExitMenuItem_Click" />
    </MenuItem>
  </Menu>
  
</Window>
using System.Windows;

namespace SDKSample
{
    public partial class WindowWithFileExit : System.Windows.Window
    {
        public WindowWithFileExit()
        {
            InitializeComponent();
        }

        void fileExitMenuItem_Click(object sender, RoutedEventArgs e)
        {
            // Close this window
            this.Close();
        }
    }
}

Imports System.Windows

Namespace SDKSample
    Partial Public Class WindowWithFileExit
        Inherits System.Windows.Window
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub fileExitMenuItem_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
            ' Close this window
            Me.Close()
        End Sub
    End Class
End Namespace

ウィンドウが閉じるとき、ClosingClosed の 2 つのイベントが発生します。When a window closes, it raises two events: Closing and Closed.

Closing はウィンドウが閉じる前に発生し、ウィンドウが閉じるのを防ぐことができる機構を提供します。Closing is raised before the window closes, and it provides a mechanism by which window closure can be prevented. ウィンドウが閉じるのを防ぐのは、一般的に、ウィンドウ コンテンツに変更したデータが含まれている場合です。One common reason to prevent window closure is if window content contains modified data. この場合、Closing イベントを処理して、データが変更されているかどうかを確認できます。変更されている場合は、ユーザーにデータを保存しないでこのままウィンドウを閉じるか、またはウィンドウを閉じる操作を取り消すかを確認できます。In this situation, the Closing event can be handled to determine whether data is dirty and, if so, to ask the user whether to either continue closing the window without saving the data or to cancel window closure. Closing を処理するときの要点を、次の例に示します。The following example shows the key aspects of handling Closing.

using System; // EventArgs
using System.ComponentModel; // CancelEventArgs
using System.Windows; // window

namespace CSharp
{
    public partial class DataWindow : Window
    {
        // Is data dirty
        bool isDataDirty = false;

        public DataWindow()
        {
            InitializeComponent();
        }

        void documentTextBox_TextChanged(object sender, EventArgs e)
        {
            this.isDataDirty = true;
        }

        void DataWindow_Closing(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Closing called");

            // If data is dirty, notify user and ask for a response
            if (this.isDataDirty)
            {
                string msg = "Data is dirty. Close without saving?";
                MessageBoxResult result =
                  MessageBox.Show(
                    msg,
                    "Data App",
                    MessageBoxButton.YesNo,
                    MessageBoxImage.Warning);
                if (result == MessageBoxResult.No)
                {
                    // If user doesn't want to close, cancel closure
                    e.Cancel = true;
                }
            }
        }
    }
}
Imports System ' EventArgs
Imports System.ComponentModel ' CancelEventArgs
Imports System.Windows ' window

Namespace VisualBasic
    Partial Public Class DataWindow
        Inherits Window
        ' Is data dirty
        Private isDataDirty As Boolean = False

        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub documentTextBox_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
            Me.isDataDirty = True
        End Sub

        Private Sub DataWindow_Closing(ByVal sender As Object, ByVal e As CancelEventArgs)
            MessageBox.Show("Closing called")

            ' If data is dirty, notify user and ask for a response
            If Me.isDataDirty Then
                Dim msg As String = "Data is dirty. Close without saving?"
                Dim result As MessageBoxResult = MessageBox.Show(msg, "Data App", MessageBoxButton.YesNo, MessageBoxImage.Warning)
                If result = MessageBoxResult.No Then
                    ' If user doesn't want to close, cancel closure
                    e.Cancel = True
                End If
            End If
        End Sub
    End Class
End Namespace

Closing イベント ハンドラーに CancelEventArgs が渡されます。これにより、ウィンドウが閉じるのを防ぐために true に設定する BooleanCancel プロパティが実装されます。The Closing event handler is passed a CancelEventArgs, which implements the BooleanCancel property that you set to true to prevent a window from closing.

Closing が処理されない場合、または処理されたがキャンセルされていない場合、ウィンドウは閉じられます。If Closing is not handled, or it is handled but not canceled, the window will close. ウィンドウが実際に閉じられる直前に、Closed が発生します。Just before a window actually closes, Closed is raised. この時点で、ウィンドウが閉じるのを防ぐことはできません。At this point, a window cannot be prevented from closing.

注意

メイン アプリケーション ウィンドウを閉じるか、最後のウィンドウを閉じるときに、アプリケーションが自動的にシャットダウンされるように構成することができます (「MainWindow」を参照)。An application can be configured to shut down automatically when either the main application window closes (see MainWindow) or the last window closes. 詳細については、「ShutdownMode」を参照してください。For details, see ShutdownMode.

非クライアント領域およびクライアント領域に提供される機構によって、ウィンドウを明示的に閉じることができます。また、次のような場合に、アプリケーションまたは Windows の他の部分の動作の結果として、ウィンドウを暗黙的に閉じることもできます。While a window can be explicitly closed through mechanisms provided in the non-client and client areas, a window can also be implicitly closed as a result of behavior in other parts of the application or Windows, including the following:

  • ユーザーが Windows からログオフしたか、Windows をシャットダウンした場合。A user logs off or shuts down Windows.

  • ウィンドウのオーナーが閉じた場合 (「Owner」を参照)。A window's owner closes (see Owner).

  • メイン アプリケーション ウィンドウが閉じられ、ShutdownModeOnMainWindowClose である場合。The main application window is closed and ShutdownMode is OnMainWindowClose.

  • Shutdown が呼ばれたとき。Shutdown is called.

注意

ウィンドウを閉じると、再度開くことはできません。A window cannot be reopened after it is closed.

ウィンドウの有効期間イベントWindow Lifetime Events

次の図は、ウィンドウの有効期間内における主要なイベントのシーケンスを示しています。The following illustration shows the sequence of the principal events in the lifetime of a window:

ウィンドウの有効期間内のイベントを示す図。

次の図は、アクティブ化しないで表示されるウィンドウの有効期間内における主要なイベントのシーケンスを示しています (ウィンドウが表示される前に ShowActivatedfalse に設定されています)。The following illustration shows the sequence of the principal events in the lifetime of a window that is shown without activation (ShowActivated is set to false before the window is shown):

アクティブ化なしでのウィンドウの有効期間内のイベントを示す図。

ウィンドウの位置Window Location

ウィンドウが開いているとき、ウィンドウはデスクトップに対して相対的な x ディメンションと y ディメンションの位置にあります。While a window is open, it has a location in the x and y dimensions relative to the desktop. この位置は、Left プロパティと Top プロパティをそれぞれ検査することで確認できます。This location can be determined by inspecting the Left and Top properties, respectively. これらのプロパティを設定して、ウィンドウの位置を変更できます。You can set these properties to change the location of the window.

WindowStartupLocation プロパティを次の WindowStartupLocation 列挙値のいずれかに設定して、Window が最初に表示されるときの初期位置を指定することもできます。You can also specify the initial location of a Window when it first appears by setting the WindowStartupLocation property with one of the following WindowStartupLocation enumeration values:

開始位置が Manual と指定され、Left プロパティと Top プロパティが設定されていない場合、Window では、ウィンドウに表示位置が問い合わされます。If the startup location is specified as Manual, and the Left and Top properties have not been set, Window will ask Windows for a location to appear in.

最上位ウィンドウと Z オーダーTopmost Windows and Z-Order

ウィンドウには、x 位置と y 位置に加えて、他のウィンドウを基準にして垂直位置を決定する z ディメンションの位置もあります。Besides having an x and y location, a window also has a location in the z dimension, which determines its vertical position with respect to other windows. これはウィンドウの z オーダーともいい、標準 z オーダーと最上位 z オーダーの 2 種類があります。This is known as the window's z-order, and there are two types: normal z-order and topmost z-order. "標準 z オーダー" にあるウィンドウの位置は、そのウィンドウが現在アクティブかどうかによって決まります。The location of a window in the normal z-order is determined by whether it is currently active or not. 既定では、ウィンドウは標準 z オーダーにあります。By default, a window is located in the normal z-order. "最上位 z オーダー" にあるウィンドウの位置も、そのウィンドウが現在アクティブかどうかによって決まります。The location of a window in the topmost z-order is also determined by whether it is currently active or not. また、最上位 z オーダーにあるウィンドウは、常に、標準 z オーダーにあるウィンドウの上に位置します。Furthermore, windows in the topmost z-order are always located above windows in the normal z-order. ウィンドウを最上位 z オーダーに配置するには、ウィンドウの Topmost プロパティを true に設定します。A window is located in the topmost z-order by setting its Topmost property to true.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    Topmost="True">
</Window>

各 z オーダー内では、現在アクティブなウィンドウは、同じ z オーダーにある他のすべてのウィンドウの上に表示されます。Within each z-order, the currently active window appears above all other windows in the same z-order.

ウィンドウ サイズWindow Size

ウィンドウには、デスクトップの位置に加えて、さまざまな幅と高さのプロパティや SizeToContent など、複数のプロパティによって決定されるサイズがあります。Besides having a desktop location, a window has a size that is determined by several properties, including the various width and height properties and SizeToContent.

MinWidthWidth、および MaxWidth を使用して、有効期間中にウィンドウに指定できる幅の範囲を管理します。これは、次の例に示すように構成します。MinWidth, Width, and MaxWidth are used to manage the range of widths that a window can have during its lifetime, and are configured as shown in the following example.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    MinWidth="300" Width="400" MaxWidth="500">
</Window>

ウィンドウの高さは、MinHeightHeight、および MaxHeight によって管理します。これは、次の例に示すように構成します。Window height is managed by MinHeight, Height, and MaxHeight, and are configured as shown in the following example.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    MinHeight="300" Height="400" MaxHeight="500">
</Window>

さまざまな幅の値と高さの値はそれぞれ範囲を指定しているため、サイズを変更できるウィンドウの幅と高さは、それぞれの寸法に指定された範囲内のいずれかの値を取ります。Because the various width values and height values each specify a range, it is possible for the width and height of a resizable window to be anywhere within the specified range for the respective dimension. 現在の幅と高さを検出するには、それぞれ ActualWidthActualHeight を検査します。To detect its current width and height, inspect ActualWidth and ActualHeight, respectively.

ウィンドウの幅と高さを、ウィンドウのコンテンツのサイズに合わせたサイズにする場合は、SizeToContent プロパティを使用できます。これは、次の値を取ります。If you'd like the width and height of your window to have a size that fits to the size of the window's content, you can use the SizeToContent property, which has the following values:

  • ManualManual. 効果 (既定値)。No effect (default).

  • WidthWidth. コンテンツの幅に合わせます。これは、MinWidthMaxWidth の両方をコンテンツの幅に設定するのと同じ効果があります。Fit to content width, which has the same effect as setting both MinWidth and MaxWidth to the width of the content.

  • HeightHeight. コンテンツの高さに合わせます。これは、MinHeightMaxHeight の両方をコンテンツの高さに設定するのと同じ効果があります。Fit to content height, which has the same effect as setting both MinHeight and MaxHeight to the height of the content.

  • WidthAndHeightWidthAndHeight. コンテンツの幅と高さに合わせます。これは、MinHeightMaxHeight の両方をコンテンツの高さに設定し、MinWidthMaxWidth の両方をコンテンツの幅に設定するのと同じ効果があります。Fit to content width and height, which has the same effect as setting both MinHeight and MaxHeight to the height of the content, and setting both MinWidth and MaxWidth to the width of the content.

次の例では、ウィンドウを最初に表示するときに、そのコンテンツに合わせて垂直方向と水平方向の両方のサイズを自動的に変更するウィンドウを示しています。The following example shows a window that automatically sizes to fit its content, both vertically and horizontally, when first shown.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    SizeToContent="WidthAndHeight">
</Window>

次の例では、ウィンドウをそのコンテンツに合わせてサイズ変更する方法を指定するために、コード内に SizeToContent プロパティを設定する方法を示します。The following example shows how to set the SizeToContent property in code to specify how a window resizes to fit its content .


// Manually alter window height and width
this.SizeToContent = SizeToContent.Manual;

// Automatically resize width relative to content
this.SizeToContent = SizeToContent.Width;

// Automatically resize height relative to content
this.SizeToContent = SizeToContent.Height;

// Automatically resize height and width relative to content
this.SizeToContent = SizeToContent.WidthAndHeight;

' Manually alter window height and width
Me.SizeToContent = SizeToContent.Manual

' Automatically resize width relative to content
Me.SizeToContent = SizeToContent.Width

' Automatically resize height relative to content
Me.SizeToContent = SizeToContent.Height

' Automatically resize height and width relative to content
Me.SizeToContent = SizeToContent.WidthAndHeight

サイズ変更プロパティの優先順位Order of Precedence for Sizing Properties

基本的に、ウィンドウのさまざまなサイズのプロパティを組み合わせて、サイズを変更できるウィンドウの幅と高さの範囲を定義します。Essentially, the various sizes properties of a window combine to define the range of width and height for a resizable window. 有効な範囲が維持されていることを確認するために、Window では次の優先順位でサイズ プロパティの値が評価されます。To ensure a valid range is maintained, Window evaluates the values of the size properties using the following orders of precedence.

高さのプロパティ:For Height Properties:

  1. FrameworkElement.MinHeight

  2. FrameworkElement.MaxHeight

  3. SizeToContent.Height/SizeToContent.WidthAndHeight

  4. FrameworkElement.Height

幅のプロパティ:For Width Properties:

  1. FrameworkElement.MinWidth

  2. FrameworkElement.MaxWidth

  3. SizeToContent.Width/SizeToContent.WidthAndHeight

  4. FrameworkElement.Width

優先順位では、ウィンドウが最大化されたときのサイズも決定されます。これは、WindowState プロパティで管理します。The order of precedence can also determine the size of a window when it is maximized, which is managed with the WindowState property.

ウィンドウの状態Window State

サイズを変更できるウィンドウには、有効期間中、通常、最小化、最大化の 3 つの状態があります。During the lifetime of a resizable window, it can have three states: normal, minimized, and maximized. "通常" の状態のウィンドウは、ウィンドウの既定の状態です。A window with a normal state is the default state of a window. この状態のウィンドウは、サイズ変更グリップ、またはサイズ変更可能な場合は境界線を使用して、ユーザーが移動したりサイズ変更したりできます。A window with this state allows a user to move and resize it by using a resize grip or the border, if it is resizable.

"最小化" された状態のウィンドウは、ShowInTaskbartrue に設定されている場合は、折りたたまれてタスク バー ボタンになります。それ以外の場合は、折りたたまれて、可能な最小のサイズになり、デスクトップの左下隅に自動的に再配置されます。A window with a minimized state collapses to its task bar button if ShowInTaskbar is set to true; otherwise, it collapses to the smallest possible size it can be and relocates itself to the bottom-left corner of the desktop. 最小化されたウィンドウはいずれの種類も、境界線またはサイズ変更グリップを使用してサイズ変更できません。ただし、タスク バーに表示されていない最小化されたウィンドウはデスクトップの任意の場所にドラッグできます。Neither type of minimized window can be resized using a border or resize grip, although a minimized window that isn't shown in the task bar can be dragged around the desktop.

"最大化" された状態のウィンドウは、拡大されて、可能な最大のサイズになります。これは、MaxWidth プロパティ、MaxHeight プロパティ、および SizeToContent プロパティが指定するのと同じサイズです。A window with a maximized state expands to the maximum size it can be, which will only be as large as its MaxWidth, MaxHeight, and SizeToContent properties dictate. 最小化されたウィンドウと同様、最大化されたウィンドウは、サイズ変更グリップを使用したり、境界線をドラッグしたりすることによってサイズ変更できません。Like a minimized window, a maximized window cannot be resized by using a resize grip or by dragging the border.

注意

ウィンドウが現在最大化または最小化されている場合でも、ウィンドウの TopLeftWidth、および Height の各プロパティの値は、通常の状態の値を常に表します。The values of the Top, Left, Width, and Height properties of a window always represent the values for the normal state, even when the window is currently maximized or minimized.

ウィンドウの状態は、WindowState プロパティを設定することによって構成できます。これは、次の WindowState 列挙値のいずれかを取ります。The state of a window can be configured by setting its WindowState property, which can have one of the following WindowState enumeration values:

開くときに最大化されて表示されるウィンドウを作成する方法を、次の例に示します。The following example shows how to create a window that is shown as maximized when it opens.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    WindowState="Maximized">
</Window>

通常は、WindowState を設定してウィンドウの初期状態を構成する必要があります。In general, you should set WindowState to configure the initial state of a window. サイズ変更可能なウィンドウが表示されると、ユーザーはウィンドウのタイトル バーにある最小化ボタン、最大化ボタン、および元に戻すボタンを使用して、ウィンドウの状態を変更できます。Once a resizable window is shown, users can press the minimize, maximize, and restore buttons on the window's title bar to change the window state.

ウィンドウの外観Window Appearance

ウィンドウのクライアント領域の外観を変更するために、ボタン、ラベル、テキスト ボックスなど、ウィンドウ固有のコンテンツを追加します。You change the appearance of the client area of a window by adding window-specific content to it, such as buttons, labels, and text boxes. 非クライアント領域を構成するために、Window には、ウィンドウのアイコンを設定する Icon、タイトルを設定する Title など、いくつかのプロパティが用意されています。To configure the non-client area, Window provides several properties, which include Icon to set a window's icon and Title to set its title.

また、ウィンドウのサイズ変更モード、ウィンドウ スタイル、デスクトップのタスク バーにボタンとして表示するかどうかを構成して、非クライアント領域の境界線の外観と動作も変更できます。You can also change the appearance and behavior of non-client area border by configuring a window's resize mode, window style, and whether it appears as a button in the desktop task bar.

サイズ変更モードResize Mode

WindowStyle プロパティに応じて、ユーザーがどのようにウィンドウのサイズを変更するか、またはウィンドウのサイズを変更できるかどうかを制御できます。Depending on the WindowStyle property, you can control how (and if) users can resize the window. ウィンドウ スタイルの選択は、ユーザーがマウスで境界線をドラッグすることによってウィンドウのサイズを変更できるかどうか、 [最小化] ボタン、 [最大化] ボタン、および [サイズ変更] ボタンが非クライアント領域に表示されるかどうか、表示される場合にボタンが有効かどうかに影響を与えます。The choice of window style affects whether a user can resize the window by dragging its border with the mouse, whether the Minimize, Maximize, and Resize buttons appear on the non-client area, and, if they do appear, whether they are enabled.

ウィンドウのサイズ変更方法は、ResizeMode プロパティを設定することによって構成できます。これは、次の ResizeMode 列挙値のいずれかを取ります。You can configure how a window resizes by setting its ResizeMode property, which can be one of the following ResizeMode enumeration values:

XAMLXAML と同様に、ウィンドウのサイズ変更モードは、有効期間中に変更される可能性はほとんどありません。したがって、多くの場合は WindowStyle マークアップから設定します。As with WindowStyle, the resize mode of a window is unlikely to change during its lifetime, which means that you'll most likely set it from XAMLXAML markup.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    ResizeMode="CanResizeWithGrip">
</Window>

WindowState プロパティを検査することによって、ウィンドウが最大化されているか、最小化されているか、元のサイズに戻されているかを検出できることに注意してください。Note that you can detect whether a window is maximized, minimized, or restored by inspecting the WindowState property.

ウィンドウ スタイルWindow Style

ウィンドウの非クライアント領域から公開される境界線は、多くのアプリケーションに適しています。The border that is exposed from the non-client area of a window is suitable for most applications. ただし、ウィンドウの種類によって、異なる種類の境界線が必要な状況や、境界線がまったく必要ない状況があります。However, there are circumstances where different types of borders are needed, or no borders are needed at all, depending on the type of window.

ウィンドウの境界線の種類を制御するには、WindowStyle プロパティを次の WindowStyle 列挙値のいずれかに設定します。To control what type of border a window gets, you set its WindowStyle property with one of the following values of the WindowStyle enumeration:

これらのウィンドウ スタイルの効果については、次の図で説明します。The effect of these window styles are illustrated in the following figure:

ウィンドウの境界線スタイルの図。

XAMLXAML マークアップまたはコードのいずれかを使用して WindowStyle を設定できます。ウィンドウの有効期間中に変更される可能性はほとんどないため、多くの場合は XAMLXAML マークアップを使用して構成します。You can set WindowStyle using either XAMLXAML markup or code; because it is unlikely to change during the lifetime of a window, you will most likely configure it using XAMLXAML markup.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    WindowStyle="ToolWindow">
</Window>

四角形以外のウィンドウ スタイルNon-Rectangular Window Style

WindowStyle で使用できる境界線のスタイルでは十分ではない状況もあります。There are also situations where the border styles that WindowStyle allows you to have are not sufficient. たとえば、Microsoft Windows Media Player で使用されるような、四角形以外の境界線を持つアプリケーションを作成する場合があります。For example, you may want to create an application with a non-rectangular border, like Microsoft Windows Media Player uses.

たとえば、次の図に示す吹き出しウィンドウを想定します。For example, consider the speech bubble window shown in the following figure:

"ここをドラッグしてください" という吹き出しウィンドウ。

この種類のウィンドウは、WindowStyle プロパティを None に設定し、Window が透明度に対して持つ特殊なサポートを使用することによって作成できます。This type of window can be created by setting the WindowStyle property to None, and by using special support that Window has for transparency.

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    WindowStyle="None"
    AllowsTransparency="True"
    Background="Transparent">
</Window>

値をこの組み合わせで使用し、ウィンドウが完全に透明にレンダリングされるように設定します。This combination of values instructs the window to render completely transparent. この状態では、ウィンドウの非クライアント領域の表示要素 (閉じるメニュー、最小化ボタン、最大化ボタン、元に戻すボタンなど) は使用できません。In this state, the window's non-client area adornments (the Close menu, Minimize, Maximize, and Restore buttons, and so on) cannot be used. したがって、独自の表示要素を用意する必要があります。Consequently, you need to provide your own.

タスク バーのプレゼンスTask Bar Presence

ウィンドウの既定の外観には、次の図に示すような、タスク バー ボタンも含まれます。The default appearance of a window includes a taskbar button, like the one shown in the following figure:

タスク バー ボタンのあるウィンドウを示すスクリーンショット。

メッセージ ボックスやダイアログ ボックスなど、ウィンドウの種類によっては、タスク バー ボタンがありません (「ダイアログ ボックスの概要」を参照)。Some types of windows don't have a task bar button, such as message boxes and dialog boxes (see Dialog Boxes Overview). ウィンドウのタスク バー ボタンを表示するかどうかは、ShowInTaskbar プロパティを設定することによって制御できます (既定値は true)。You can control whether the task bar button for a window is shown by setting the ShowInTaskbar property (true by default).

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    ShowInTaskbar="False">
</Window>

セキュリティの考慮事項Security Considerations

Window をインスタンス化するには、UnmanagedCode セキュリティ アクセス許可が必要です。Window requires UnmanagedCode security permission to be instantiated. ローカル コンピューターにインストールされ、ローカル コンピューターから起動されるアプリケーションの場合は、アプリケーションに付与されるアクセス許可セットの範囲内になります。For applications installed on and launched from the local machine, this falls within the set of permissions that are granted to the application.

ただし、これは、ClickOnce を使用して、インターネット ゾーンまたはローカル イントラネット ゾーンから起動されるアプリケーションに付与されるアクセス許可セットの範囲外になります。However, this falls outside the set of permissions granted to applications that are launched from the Internet or Local intranet zone using ClickOnce. そのため、ユーザーは ClickOnce セキュリティ警告を受け取り、アプリケーションのアクセス許可セットを完全信頼に昇格させる必要があります。Consequently, users will receive a ClickOnce security warning and will need to elevate the permission set for the application to full trust.

さらに、XBAP では、既定でウィンドウまたはダイアログ ボックスを表示できません。Additionally, XBAPs cannot show windows or dialog boxes by default. スタンドアロン アプリケーションのセキュリティに関する考慮事項については、「WPF のセキュリティ方針 - プラットフォーム セキュリティ」を参照してください。For a discussion on standalone application security considerations, see WPF Security Strategy - Platform Security.

その他の種類のウィンドウOther Types of Windows

NavigationWindow は、ナビゲーション可能なコンテンツをホストするように設計されたウィンドウです。NavigationWindow is a window that is designed to host navigable content. 詳しくは、「ナビゲーションの概要」をご覧ください。For more information, see Navigation Overview).

ダイアログ ボックスは、ユーザーから情報を収集して機能を完了するためによく使用されるウィンドウです。Dialog boxes are windows that are often used to gather information from a user to complete a function. たとえば、ユーザーがファイルを開く場合は、通常、ユーザーからファイル名を取得するために、アプリケーションによって [ファイルを開く] ダイアログ ボックスが表示されます。For example, when a user wants to open a file, the Open File dialog box is usually displayed by an application to get the file name from the user. 詳細については、「ダイアログ ボックスの概要」を参照してください。For more information, see Dialog Boxes Overview.

関連項目See also