我使用ShowDialog()与WindowStyle = WindowStyle.SingleBorderWindow;我的WPF(MVVM)应用程序打开一个模态窗口,但它让我浏览到使用Windows任务栏的父窗口(Windows 7).
我在这里找到了答案:WPF和ShowDialog()但它不适合我,因为我不需要"永远在线"工具窗口.
提前致谢
Mat*_*asG 10
尝试设置Owner对话框的属性.这应该工作.
Window dialog = new Window();
dialog.Owner = mainWindow;
dialog.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
编辑: 我在使用MVVM时遇到了类似的问题.您可以使用委托来解决此问题.
public class MainWindowViewModel
{
public delegate void ShowDialogDelegate(string message);
public ShowDialogDelegate ShowDialogCallback;
public void Action()
{
// here you want to show the dialog
ShowDialogDelegate callback = ShowDialogCallback;
if(callback != null)
{
callback("Message");
}
}
}
public class MainWindow
{
public MainWindow()
{
// initialize the ViewModel
MainWindowViewModel viewModel = new MainWindowViewModel();
viewModel.ShowDialogCallback += ShowDialog;
DataContext = viewModel;
}
private void ShowDialog(string message)
{
// show the dialog
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到了这个问题,但是当从视图模型打开窗口时,我没有对当前窗口的引用。为了解决这个问题,我使用了这段代码:
var myWindow = new MyWindowType();
myWindow.Owner = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);
Run Code Online (Sandbox Code Playgroud)
您可以使用:myWindow.Owner = Application.Current.MainWindow;
但是,如果您像这样打开三个窗口,则此方法会导致问题:
MainWindow
|
-----> ChildWindow1
|
-----> ChildWindow2
Run Code Online (Sandbox Code Playgroud)
然后设置 ChildWindow2.Owner = Application.Current.MainWindow 会将窗口的所有者设置为其祖父窗口,而不是父窗口。
| 归档时间: |
|
| 查看次数: |
15264 次 |
| 最近记录: |