我在我的MainWindow中有一個CheckBox
,它用作打開和關閉另一個窗口(讓我們說NextWindow)的切換。簡單說來我做了什麼直到現在是:當窗口關閉時,複選框狀態改變
- 當
CheckBox
被選中,打開另一個窗口 - 當
CheckBox
選中此項,則關閉打開的窗口中
我想要什麼現在是更改CheckBox
狀態,當用戶手動關閉NextWindow時。我需要做什麼?
這裏是我的代碼:
對於MainWindow.XAML
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="100" Width="100">
<Grid>
<CheckBox Name="chk" Checked="chk_Checked_1" Unchecked="chk_Unchecked_1" Margin="20">Window</CheckBox>
</Grid>
對於MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void chk_Checked_1(object sender, RoutedEventArgs e)
{
NextWindow nw = new NextWindow();
nw.Show();
}
private void chk_Unchecked_1(object sender, RoutedEventArgs e)
{
var window = IsWindowOpen<Window>("Next");
if (window != null)
{
window.Close();
}
}
public static T IsWindowOpen<T>(string name = null)
where T : Window
{
var windows = Application.Current.Windows.OfType<T>();
return string.IsNullOrEmpty(name) ? windows.FirstOrDefault() : windows.FirstOrDefault(w => w.Name.Equals(name));
}
}
對於NextWindow.xaml
<Window x:Class="WpfApplication2.NextWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="NextWindow" Height="100" Width="100" Name="Next">
<Grid>
<Label Margin="20">Hello</Label>
</Grid>
使用封閉事件? https://stackoverflow.com/questions/10033551/wpf-window-closed-event-usage和https://msdn.microsoft.com/en-us/library/system.windows.window.closed(v=vs。 110).aspx – Arie
如此簡單而優雅。謝謝@Arie – Skaranjit