在WPF应用程序中,我有弹出窗口实例的按钮.
alt text http://i28.tinypic.com/jqjkfp.jpg
这是XAML:
<Window x:Class="TestPopupFix.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="600" Width="800">
<StackPanel>
<Button Content="Open first popup" Click="Button_OpenFirst"/>
<Button Content="Open second popup" Click="Button_OpenSecond"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
而这背后的代码:
private void Button_OpenFirst(object sender, RoutedEventArgs e)
{
Window window = new Window();
TextBlock tb = new TextBlock();
tb.Text = "This is the first window.";
window.Content = tb;
window.Width = 300;
window.Height = 300;
window.Show();
}
private void Button_OpenSecond(object sender, RoutedEventArgs e)
{
Window window = new Window();
TextBlock tb = new TextBlock();
tb.Text = "This is the second window.";
window.Content = tb;
window.Width = 300;
window.Height = 300;
window.Show();
}
Run Code Online (Sandbox Code Playgroud)
当我弹出新窗口时,我需要做些什么来使主应用程序保持最后的状态?
Mar*_*age 12
要在可视层次结构中排列窗口,您必须Owner将子窗口的属性设置为父窗口.
您应该将代码更改为类似于此的代码:
Window parentWindow;
private void Button_OpenFirst(object sender, RoutedEventArgs e)
{
this.parentWindow = new Window();
this.parentWindow.Owner = this;
this.parentWindow.Show();
}
private void Button_OpenSecond(object sender, RoutedEventArgs e)
{
Window childWindow = new Window();
childWindow.Owner = this.parentWindow;
childWindow.Show();
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,但是在WinForms表单中托管了一个WPF窗口.在这种情况下,设置所有者让我成为了我的一部分,但偶尔它仍然落后.
除了那之外我最终做的是Loaded在WPF窗口上连接事件并调用Activate如下:
_window.Loaded += (s, e) => _window.Activate();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9918 次 |
| 最近记录: |