Application.Windows Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene las ventanas con instancias de una aplicación.
public:
property System::Windows::WindowCollection ^ Windows { System::Windows::WindowCollection ^ get(); };
public System.Windows.WindowCollection Windows { get; }
member this.Windows : System.Windows.WindowCollection
Public ReadOnly Property Windows As WindowCollection
Valor de propiedad
WindowCollection que contiene las referencias a todos los objetos de ventana en el AppDomain actual.
Ejemplos
En el ejemplo siguiente se muestra cómo enumerar la Windows propiedad para crear un menú de Windows de nivel superior, que es común a aplicaciones de interfaz de varios documentos (MDI), como Microsoft Excel o aplicaciones de interfaz de documento único (SDI) de varias instancias, como Microsoft Word.
using System;
using System.Windows;
using System.Windows.Controls;
namespace CSharp
{
// Custom menu item that stores a reference to a window
public class WindowMenuItem : MenuItem
{
public Window Window = null;
}
}
Imports System.Windows
Imports System.Windows.Controls
Namespace VisualBasic
' Custom menu item that stores a reference to a window
Public Class WindowMenuItem
Inherits MenuItem
Public Window As Window = Nothing
End Class
End Namespace
<Window x:Class="CSharp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CSharp" Height="300" Width="300" Activated="MainWindow_Activated"
>
<StackPanel>
<Menu>
<MenuItem Header="_File">
<MenuItem Name="newWindowMenuItem" Click="newWindowMenuItem_Click" Header="_New Window"></MenuItem>
<Separator></Separator>
<MenuItem Name="exitMenuItem" Click="exitMenuItem_Click" Header="E_xit"></MenuItem>
</MenuItem>
<MenuItem Name="windowMenuItem" Header="_Window">
</MenuItem>
</Menu>
<Canvas></Canvas>
</StackPanel>
</Window>
using System;
using System.Windows;
using System.Windows.Controls;
namespace CSharp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
Imports System.Windows
Imports System.Windows.Controls
Namespace VisualBasic
Partial Public Class MainWindow
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
void MainWindow_Activated(object sender, EventArgs e)
{
this.windowMenuItem.Items.Clear();
int windowCount = 0;
foreach (Window window in Application.Current.Windows)
{
++windowCount;
WindowMenuItem menuItem = new WindowMenuItem();
menuItem.Window = window;
menuItem.Header = "_" + windowCount.ToString() + " Window " + windowCount.ToString();
menuItem.Click += new RoutedEventHandler(menuItem_Click);
this.windowMenuItem.Items.Add(menuItem);
}
}
void menuItem_Click(object sender, RoutedEventArgs e)
{
WindowMenuItem menuItem = (WindowMenuItem)sender;
menuItem.Window.Activate();
}
}
}
Private Sub MainWindow_Activated(ByVal sender As Object, ByVal e As EventArgs)
Me.windowMenuItem.Items.Clear()
Dim windowCount As Integer = 0
For Each window As Window In Application.Current.Windows
windowCount += 1
Dim menuItem As New WindowMenuItem()
menuItem.Window = window
menuItem.Header = "_" & windowCount.ToString() & " Window " & windowCount.ToString()
AddHandler menuItem.Click, AddressOf menuItem_Click
Me.windowMenuItem.Items.Add(menuItem)
Next window
End Sub
Private Sub menuItem_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim menuItem As WindowMenuItem = CType(sender, WindowMenuItem)
menuItem.Window.Activate()
End Sub
End Class
End Namespace
Comentarios
Se Window agrega automáticamente una referencia a Windows en cuanto se crea una instancia de una ventana en el subproceso de la interfaz de usuario (UI); no se agregan ventanas creadas por subprocesos de trabajo. Una Window referencia se quita automáticamente después de que se haya controlado su Closing evento y antes de que se genere su Closed evento.
De forma predeterminada, el primer elemento agregado a la Windows propiedad se convierte en MainWindow.
Esta propiedad solo está disponible en el subproceso que creó el Application objeto .