WPF关于绑定与更新修改
2024-09-03 02:01:07
看到一些资料与教程视频,在这里记录一下,
首先 我们先做好一个公共的INotifyPropertyChanged事件,也就是通知更新
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
再创建命令类
public class MyCommand : ICommand
{ Action executeAction;
public MyCommand(Action action)
{
executeAction = action;
}
public event EventHandler? CanExecuteChanged; public bool CanExecute(object? parameter)
{
return true;
} public void Execute(object? parameter)
{
executeAction();
}
}
然后创建我们要ViewModel类,要引用到前面写好的通知更新类, 把方法放在set中,也就是OnPropertyChanged()方法
public class MainViewMoel:ViewModelBase
{
public MainViewMoel()
{
Name = "GGG";
ShowCommand = new MyCommand(Show);
} public MyCommand ShowCommand { get; set; }
private string name ="";
public string Name { get { return name; }
set
{
name = value;OnPropertyChanged();
}
}
public void Show()
{
Name = "1111111111";
MessageBox.Show("这是个按钮!");
}
}
最后赋值到我们的对应的页面上
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewMoel();
}
}
xaml 中也要绑定对应的控件中
<StackPanel >
<TextBox Height="50" Text="{Binding Name}" x:Name="txtName" Margin="5"/>
<Button Height="50" Command="{Binding ShowCommand}" x:Name="Btn" Margin="5"/>
</StackPanel>
这样就是一个测试的绑定并通知的Demo,用于以后参考
视频讲解来源WPF项目实战合集(2022终结版)_哔哩哔哩_bilibili
主要是OnPropertyChanged()方法 能够很方便的去使用
最新文章
- jQuery 2.0.3 源码分析 回溯魔法 end()和pushStack()
- HTTP 协议缓存
- Android 图片三级缓存
- 腾讯大规模Hadoop集群实践 [转程序员杂志]
- poj 3311(floyd+状态压缩)
- jQuery的animate方法在IE8下出现小问题
- leetcode第30题--Next Permutation
- 最短路 HDU 2544
- immutable日常操作之深入API
- ARM非对齐操作异常解决过程
- WebService(1-1)webservice调用
- 搭建rancher节点
- 使用asp.net MVC的 HtmlHelper 时遇到的小问题,报错:Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
- NetCore 生成RSA公私钥对,公钥加密私钥解密,私钥加密公钥解密
- PC/FORTH 变量|常数|数组
- 论文笔记之:SeqGAN: Sequence generative adversarial nets with policy gradient
- public void method(),void前面的泛型T是什么
- linux环境中,ssh登录报错,Permission denied, please try again.
- 深入理解$watch ,$apply 和 $digest --- 理解数据绑定过程——续
- 3Sum Closest - LeetCode