You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Avalonia中使用Community Toolkit & MVVM实现视图跳转按钮

Avalonia实现视图跳转(从ValueSelectionPageView到TextPageView)

步骤1:给ValueSelectionPageView添加跳转按钮

修改ValueSelectionPageView.axaml,添加绑定导航命令的按钮:

<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
             x:Class="AvaloniaApplication1.Views.ValueSelectionPageView"
             xmlns:vm="using:AvaloniaApplication1.ViewModels"
             x:DataType="vm:ValueSelectionPageViewModel"
             >
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <Button Content="跳转到文本页面" 
                Command="{Binding NavigateToTextPageCommand}"
                Padding="10 5"/>
    </StackPanel>
</UserControl>

步骤2:给ValueSelectionPageViewModel添加导航命令

修改ValueSelectionPageViewModel.cs,添加RelayCommand处理跳转逻辑:

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using AvaloniaApplication1.Views;
using Avalonia.Controls.ApplicationLifetimes;

namespace AvaloniaApplication1.ViewModels;

public partial class ValueSelectionPageViewModel : ViewModelBase
{
    [RelayCommand]
    private void NavigateToTextPage()
    {
        // 获取主窗口并切换内容为TextPageView
        if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
        {
            desktopLifetime.MainWindow.Content = new TextPageView
            {
                DataContext = new TextPageViewModel()
            };
        }
    }
}

步骤3:设置主窗口初始显示内容

如果主窗口还未初始化显示ValueSelectionPageView,修改MainWindow.xaml.cs的构造函数:

using Avalonia.Controls;
using AvaloniaApplication1.Views;

namespace AvaloniaApplication1;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        // 初始加载ValueSelectionPageView
        Content = new ValueSelectionPageView
        {
            DataContext = new ValueSelectionPageViewModel()
        };
    }
}

补充说明

上述是最基础的视图切换方案,适合入门。如果后续需要路由管理、视图堆栈、参数传递等复杂导航场景,可以学习Avalonia官方的NavigationView组件或社区成熟的导航库。

内容的提问来源于stack exchange,提问作者someone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:52:44