<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.vb
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Media
Namespace WpfApplication1
Public Partial Class Window1
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private Sub Window1_Loaded(sender As Object, e As RoutedEventArgs)
For i As Integer = 1 To 5
Dim window As New Window()
SetupWindow(window, "Window " & i)
window.Show()
Next
RebuildWindowList()
End Sub
Private Sub SetupWindow(window As Window, title As String)
AddHandler window.Closing, New CancelEventHandler(AddressOf Window_Closing)
AddHandler window.Closed, New EventHandler(AddressOf Window_Closed)
window.Title = title
window.Width = 100.0
window.Height = 100.0
window.Content = title
End Sub
Private Sub RebuildWindowList()
Dim windows As New List(Of Window)()
For Each window As Window In Application.Current.Windows
If window Is Me Then
Continue For
End If
windows.Add(window)
Next
lbxWindows.ItemsSource = windows
End Sub
Private Sub Window_Closed(sender As Object, e As EventArgs)
RebuildWindowList()
End Sub
Private Sub Window_Closing(sender As Object, e As CancelEventArgs)
Dim w As Window = TryCast(sender, Window)
If w Is Nothing Then
Return
End If
e.Cancel = Not cbxCanClose.IsChecked = True
End Sub
Private Sub CheckBox_Checked_Changed(sender As Object, e As RoutedEventArgs)
Dim window As Window = TryCast(lbxWindows.SelectedItem, Window)
If window Is Nothing Then
Return
End If
If cbxIsVisible.IsChecked = True Then
window.Show()
Else
window.Hide()
End If
End Sub
Private Sub btnBringToFront_Click(sender As Object, e As RoutedEventArgs)
Dim window As Window = TryCast(lbxWindows.SelectedItem, Window)
If window IsNot Nothing Then
window.Activate()
End If
End Sub
Private Sub btnClose_Click(sender As Object, e As RoutedEventArgs)
Dim window As Window = TryCast(lbxWindows.SelectedItem, Window)
If window IsNot Nothing Then
window.Close()
End If
End Sub
End Class
End Namespace