扩展已更新

TestNewCommand.axaml代码

<Window 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"
        Height="134" Width="281"
         xmlns:local ="using:AvaloniaUI"
        x:Class="AvaloniaUI.TestNewCommand"
         x:DataType="local:TestNewCommand"
        Title="TestNewCommand">
    <!--https://docs.avaloniaui.net/docs/reference/controls/menu-->
    <StackPanel>
        <Menu>
            <MenuItem Header="File">
                <MenuItem Header="New" Command="{Binding NewCommand}"/>
            </MenuItem>
        </Menu>
        <Button Margin="5" Padding="5" ToolTip.Tip="New command tooltip" Command="{Binding NewCommand}">New</Button>
        <Button Margin="5" Padding="5" IsVisible="False" Command="{Binding OpenCommand}">Open (unwired)</Button>
        <Button Margin="5" Padding="5" Click="Button_Click">DoCommand</Button>
    </StackPanel>
</Window>

TestNewCommand.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using CommunityToolkit.Mvvm.Input;
using Shares.Avalonia;
using System;

namespace AvaloniaUI;

public partial class TestNewCommand : Window
{
    public TestNewCommand()
    {
        InitializeComponent();
        this.DataContext = this;
    }

    [RelayCommand]
    private void New()
    {
        Console.WriteLine($"New command clicked");
    }
    [RelayCommand]
    private void Open()
    {
        Console.WriteLine($"Open command clicked");
    }

    private void Button_Click(object? sender, RoutedEventArgs e)
    {
        //this.GetICommands()[1].Execute(null);
        //this.GetICommand("Open")?.Execute(null);
        this.GetICommands("Open")[0].Execute(null);
    }
}

运行效果

image

 

posted on 2025-08-06 11:56  dalgleish  阅读(6)  评论(0)    收藏  举报