#wpf #electron #draggable #webview2
Вопрос:
Я переношу электронное приложение в WPF Webview2.
В моем приложении Electron у меня есть бескаркасные окна. Создание настраиваемой перетаскиваемой панели заголовка равносильно добавлению свойства CSS в div
то, что я хочу, чтобы оно было перетаскиваемым: -webkit-app-region: drag
Пример ниже:
main.js:
const {app, BrowserWindow} = require('electron')
function createWindow () {
const mainWindow = new BrowserWindow()
mainWindow.loadFile('index.html')
mainWindow.webContents.setWindowOpenHandler(_ => {
return {
action: "allow",
overrideBrowserWindowOptions: {
frame: false
}
}
})
}
app.whenReady().then(() => {
createWindow()
})
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
index.html:
<button onclick="window.open('index2.html')">Open Frameless Window</button>
index2.html:
<div style="-webkit-app-region: drag; background-color:green">Toolbar</div>
<div>Body</div>
В моем приложении Webview2 у меня есть:
public static async void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
{
var obj = e.GetDeferral();
var win = new Window();
win.WindowStyle = WindowStyle.None; // remove the border
win.Show();
var w = new WebView2();
win.Content = w;
await w.EnsureCoreWebView2Async(MainWindow.Webview.CoreWebView2.Environment);
e.NewWindow = w.CoreWebView2;
obj.Complete();
}
Окно корректно отображается без рамки, но пользовательская панель заголовка не может быть перемещена. Похоже, что стили CSS не видны или что-то в этом роде.
Как я могу сделать так, чтобы эти стили имели эффект?
Ответ №1:
WebView2 не поддерживает этот webkit-app-region: drag
стиль. Вам нужно будет самостоятельно реализовать перетаскиваемые области вручную, как описано в этом выпуске GitHub.
Если вы хотите, вы можете открыть запрос на функцию в нашем проекте WebView2Feedback.