项目初始化

This commit is contained in:
2025-09-30 14:35:09 +08:00
commit 0744b61f89
19 changed files with 977 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.VisualTree;
using AvaloniaLinuxForm.ViewModels;
using AvaloniaWebView;
using System;
namespace AvaloniaLinuxForm.Views;
public partial class MainView : UserControl
{
private WebView _webView;
private Button _backButton;
private Button _forwardButton;
private Button _refreshButton;
private Button _settingbButton;
public MainView()
{
InitializeComponent();
_backButton = this.FindControl<Button>("backButton");
_backButton.Click += BackButton_OnClick;
_forwardButton = this.FindControl<Button>("forwardButton");
_forwardButton.Click += ForwardButton_OnClick;
_refreshButton = this.FindControl<Button>("refreshButton");
_refreshButton.Click += RefreshButton_OnClick;
_settingbButton = this.FindControl<Button>("settingButton");
_settingbButton.Click += async (_, __) =>
{
var settingWindow = new SettingWindow();
// 找到 MainView 所在的 Window作为 owner
var parentWindow = this.FindAncestorOfType<Window>();
// 弹窗并等待结果
var result = await settingWindow.ShowDialog<string>(parentWindow);
if (!string.IsNullOrEmpty(result))
{
LoadUrl(result);
}
};
_webView = this.FindControl<WebView>("webView");
string url = SQLiteUtil.LoadUrl();
LoadUrl(url);
_webView.NavigationCompleted += (s, e) =>
{
var vm = this.DataContext as MainViewModel;
if (vm != null)
{
vm.CanGoBack = _webView.IsCanGoBack;
vm.CanGoForward = _webView.IsCanGoForward;
}
};
}
public void BackButton_OnClick(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
_webView.GoBack();
}
public void ForwardButton_OnClick(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
_webView.GoForward();
}
public void RefreshButton_OnClick(object sender, Avalonia.Interactivity.RoutedEventArgs e)
{
_webView.Reload();
}
private void LoadUrl(string url)
{
if (Uri.TryCreate(url, UriKind.Absolute, out var uri))
{
_webView.Url = uri;
}
}
}