<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:system="clr-namespace:System.Windows;assembly=PresentationFramework"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Main Window" Height="310" Width="280" Loaded="Window1_Loaded">
<Window.Resources>
<DataTemplate DataType="{x:Type Window}" x:Key="WindowTemplate">
<StackPanel>
<Rectangle Height="50" Width="50">
<Rectangle.Fill>
<VisualBrush Visual="{Binding}" />
</Rectangle.Fill>
</Rectangle>
<TextBlock Text="{Binding Path=Title}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ListBox x:Name="lbxWindows" ItemTemplate="{StaticResource WindowTemplate}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
<StackPanel Grid.Row="1">
<CheckBox x:Name="cbxIsVisibleInTaskBar" Content="IsVisibleInTaskbar" IsChecked="{Binding ElementName=lbxWindows, Path=SelectedItem.ShowInTaskbar}"/>
<CheckBox x:Name="cbxIsVisible" Content="IsVisible"
IsChecked="{Binding ElementName=lbxWindows, Path=SelectedItem.IsVisible, Mode=OneWay}"
Checked="CheckBox_Checked_Changed"
Unchecked="CheckBox_Checked_Changed"/>
<CheckBox x:Name="cbxCanClose" Content="CanClose" IsChecked="True"/>
<Button Content="Bring To Front" Click="btnBringToFront_Click" />
<Button Content="Close" Click="btnClose_Click"/>
</StackPanel>
</Grid>
</Window>
//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Window1_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 1; i <= 5; i++)
{
Window window = new Window();
SetupWindow(window, "Window " + i);
window.Show();
}
RebuildWindowList();
}
private void SetupWindow(Window window, string title)
{
window.Closing += new CancelEventHandler(Window_Closing);
window.Closed += new EventHandler(Window_Closed);
window.Title = title;
window.Width = 100d;
window.Height = 100d;
window.Content = title;
}
private void RebuildWindowList()
{
List<Window> windows = new List<Window>();
foreach (Window window in Application.Current.Windows)
{
if (window == this)
continue;
windows.Add(window);
}
lbxWindows.ItemsSource = windows;
}
private void Window_Closed(object sender, EventArgs e)
{
RebuildWindowList();
}
private void Window_Closing(object sender, CancelEventArgs e)
{
Window w = sender as Window;
if (w == null)
return;
e.Cancel = !cbxCanClose.IsChecked == true;
}
private void CheckBox_Checked_Changed(object sender, RoutedEventArgs e)
{
Window window = lbxWindows.SelectedItem as Window;
if (window == null)
return;
if (cbxIsVisible.IsChecked == true)
window.Show();
else
window.Hide();
}
private void btnBringToFront_Click(object sender, RoutedEventArgs e)
{
Window window = lbxWindows.SelectedItem as Window;
if (window != null)
window.Activate();
}
private void btnClose_Click(object sender, RoutedEventArgs e)
{
Window window = lbxWindows.SelectedItem as Window;
if (window != null)
window.Close();
}
}
}