xaml:

<UserControl x:Class="WpfApp1.Controls.GWEditControl.GWEditCotrol"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
             xmlns:local="clr-namespace:WpfApp1.Controls.GWEditControl"
             mc:Ignorable="d"
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <Button Content="{Binding UserDemo}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseDown">
                    <i:InvokeCommandAction Command="{Binding TestClickCommand}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
    </Grid>
</UserControl>

 

ViewModel类:

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1.Controls.GWEditControl
{
    public partial class GWEditControlViewModel:ObservableObject
    {
        /// <summary>
        /// 用户备注
        /// </summary>
        [ObservableProperty]
        private string? userDemo;

        /// <summary>
        /// 绑定的事件
        /// </summary>
        [RelayCommand]
        private void TestClick()
        {
            MessageBox.Show("test");
        }
    }
}

窗口代码类(把界面和viewmodel关联起来):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1.Controls.GWEditControl
{
    /// <summary>
    /// GWEditCotrol.xaml 的交互逻辑
    /// </summary>
    public partial class GWEditCotrol : UserControl
    {
        public GWEditCotrol()
        {
            InitializeComponent();
            this.DataContext = new GWEditControlViewModel();
        }
    }
}

posted on 2025-10-05 18:45  海湾的贝壳  阅读(20)  评论(0)    收藏  举报