当前位置: 首页 > news >正文

WPF的MVVMLight框架

在NuGet中引入该库:

MVVMLight框架中的命令模式的使用:

<StackPanel>
    <TextBox Text="{Binding Name}"/>
    <TextBox Text="{Binding Title}"/>
    <Button Content="点我" Command="{Binding ShowCommand}"/>
</StackPanel>
DataContext = new MainViewModel();
internal class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        Name = "hello";
        ShowCommand = new RelayCommand(Show);
    }
    public RelayCommand ShowCommand { get; set; }
    private string name;
    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            RaisePropertyChanged();
        }
    }
    private string title;
    public string Title
    {
        get { return title; }
        set
        {
            title = value;
            RaisePropertyChanged();
        }
    }

    public void Show()
    {
        Name = "点击了按钮";
        Title = "点击了按钮";
        MessageBox.Show("点击了按钮");
    }
}

如果命令模式是需要从页面传参的情况呢?:

<StackPanel>
    <TextBox x:Name="txtIput"/>
    <TextBox Text="{Binding Title}"/>
    <Button Content="点我" Command="{Binding ShowCommand}" CommandParameter="{Binding ElementName=txtIput,Path=Text}"/>
</StackPanel>
public MainViewModel()
{
    ShowCommand = new RelayCommand<string>(Show);
}
public RelayCommand<string> ShowCommand { get; set; }
public void Show(string content)
{
    Title = content;
    MessageBox.Show($"需要展示的数据:{content}");
}

使用MVVMLight框架的命令模式,发送消息和接受消息:

MainViewModel.cs类:

internal class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        ShowCommand = new RelayCommand<string>(Show); // 注册消息
    }
    public RelayCommand<string> ShowCommand { get; set; }

    void Show(string content)
    {
        Messenger.Default.Send(content, "token1"); // 发送器 发送string类型的消息
    }
}

MainWindow.xaml类:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MainViewModel();
        // 接收器 接受string类型的消息 第二个参数:收件人
        Messenger.Default.Register<string>(this, "token1", Show);
    }

    void Show(string content)
    {
        MessageBox.Show($"我收到消息了,消息的内容为:{content}");
    }
}

相关文章:

  • 整理及仿真Xilinx的SRIO示例工程(高速收发器三十)
  • MapReduce简单应用(三)——高级WordCount
  • Datawhale Ollama教程笔记3
  • excel中单元格字符串提取数字累加
  • Linux部署DeepSeek r1 模型训练
  • Python+appium实现自动化测试
  • Netty的线程模型详解
  • ollama+langchain+deepseek本机跑通大模型
  • spring 学习(spring-Dl补充(注入不同类型的数据))
  • 搭建本地模型,实现聊天机器人
  • 二级C语言题解:函数指针的操作、单链表偶数结点值累加、判断回文
  • 2025年——【寒假】自学黑客计划(网络安全)
  • 达梦:TPCC 压测
  • 解决Did not find dashscope_api_key问题——jupyter设置环境变量
  • 初学总结SpringBoot项目在mac上环境搭建和运行
  • 教育小程序+AI出题:如何通过自然语言处理技术提升题目质量
  • [npm install 报错] Verion 9 of Highlight.js has reached EOL
  • ESP32 WIFI
  • 封装一个sqlite3动态库
  • C#两个集合多属性组合关联得到新的组合
  • 解放军仪仗分队参加白俄罗斯纪念苏联伟大卫国战争胜利80周年阅兵活动
  • 2025年4月份CPI环比由降转涨,核心CPI涨幅稳定
  • 涨知识|没想到吧,体育老师强调的运动恢复方法是错的?
  • 近4小时会谈、3项联合声明、20多份双边合作文本,中俄元首今年首次面对面会晤成果颇丰
  • 我驻苏丹使馆建议在苏中国公民尽快撤离
  • 司法部谈民营经济促进法:对违规异地执法问题作出禁止性规定