WPFMVVM模式下如何让窗口处于Active状态
时间: 2023-07-05 16:17:51 浏览: 99
在WPFMVVM模式下,可以通过在ViewModel中使用System.Windows.Interop.WindowInteropHelper类来实现将窗口置于Active状态的功能。
具体实现步骤如下:
1. 在ViewModel中定义一个Window类型的变量,用于存储窗口对象。
2. 在窗口的Loaded事件中,使用WindowInteropHelper类的GetWindowHandle方法获取窗口句柄,然后将窗口对象赋值给ViewModel中定义的变量。
3. 在需要将窗口置于Active状态的地方,使用WindowInteropHelper类的SetForegroundWindow方法将窗口置于前台。
下面是一个示例代码:
```
public class MainViewModel : INotifyPropertyChanged
{
private Window _window;
public MainViewModel()
{
//订阅窗口Loaded事件
LoadedCommand = new RelayCommand<Window>(OnLoaded);
}
public ICommand LoadedCommand { get; set; }
private void OnLoaded(Window window)
{
_window = window;
}
private void SetActive()
{
if (_window != null)
{
IntPtr handle = new WindowInteropHelper(_window).Handle;
NativeMethods.SetForegroundWindow(handle);
}
}
}
//NativeMethods类
internal static class NativeMethods
{
[DllImport("user32.dll")]
internal static extern bool SetForegroundWindow(IntPtr hWnd);
}
```
在需要将窗口置于Active状态的地方,调用SetActive方法即可。
阅读全文