项目初始化
This commit is contained in:
88
AvaloniaLinuxForm/Views/MainView.axaml.cs
Normal file
88
AvaloniaLinuxForm/Views/MainView.axaml.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user