欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > WPF的MVVMLight框架

WPF的MVVMLight框架

2025/10/11 17:26:10 来源:https://blog.csdn.net/m0_58961367/article/details/145639333  浏览:    关键词: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}");}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词