View代码

 1  <StackPanel>
2 <TextBlock Text="方法一"></TextBlock>
3 <TextBox Text="{Binding Value1}"></TextBox>
4 <TextBlock Text="方法二"></TextBlock>
5 <TextBox Text="{Binding Value2}"></TextBox>
6 <TextBlock Text="方法三"></TextBlock>
7 <TextBox Text="{Binding Value3}"></TextBox>
8 <TextBlock Text="方法四"></TextBlock>
9 <TextBox Text="{Binding Value4}"></TextBox>
10 <TextBlock Text="方法五"></TextBlock>
11 <TextBox Text="{Binding Value5}"></TextBox>
12 <Button Content="方法一" Command="{Binding AddCommand1}"></Button>
13 <Button Content="方法二" Command="{Binding AddCommand2}"></Button>
14 <Button Content="方法三" Command="{Binding AddCommand3}"></Button>
15 <Button Content="方法四" Command="{Binding AddCommand4}"></Button>
16 <Button Content="方法五" Command="{Binding AddCommand5}"></Button>
17 </StackPanel>

ViewModel代码

  1  public class MainWindowViewModel : BindableBase
2 {
3 private string _title = "Prism命令学习";
4 public string Title
5 {
6 get
7 {
8 return _title;
9 }
10 set
11 {
12 SetProperty(ref _title, value);
13 }
14 }
15
16
17 public MainWindowViewModel()
18 {
19 //方法一
20 AddCommand1 = new DelegateCommand(Add1);
21
22 //方法二
23 AddCommand2 = new DelegateCommand(Add2);
24 //方法三
25 AddCommand3 = new DelegateCommand(Add3);
26 //方法四
27 AddCommand4 = new DelegateCommand(Add4);
28 //方法五:布尔类型,可以使控件不能使用变灰
29 AddCommand5 = new DelegateCommand(Add5).ObservesCanExecute(() => Value5);
30
31 }
32 private Random random = new Random();
33 //方法一
34 private string _value1 = "Prism命令学习";
35 public string Value1
36 {
37 get
38 {
39 return _value1;
40 }
41 set
42 {
43 SetProperty(ref _value1, value);
44 }
45 }
46 public DelegateCommand? AddCommand1
47 {
48 set; get;
49 }
50 private void Add1()
51 {
52 //写入需要执行的代码;
53
54 Value1 =random.Next().ToString();
55 MessageBox.Show(Value1);
56 }
57
58
59
60 //方法二
61 private string _value2 = "Prism命令学习";
62 public string Value2
63 {
64 get
65 {
66 return _value2;
67 }
68 set
69 {
70 SetProperty(ref _value2, value);
71 AddCommand2.RaiseCanExecuteChanged();
72 }
73 }
74 public DelegateCommand? AddCommand2
75 {
76 set; get;
77 }
78
79
80 private void Add2()
81 {
82 //写入需要执行的代码;
83
84 Value2= random.Next().ToString();
85 MessageBox.Show(Value2);
86 }
87
88
89 //方法三
90 private string _value3 = "Prism命令学习";
91 public string Value3
92 {
93 get
94 {
95 return _value3;
96 }
97 set
98 {
99 _value3 = value;
100 RaisePropertyChanged(nameof(Value3));
101 //也可以这样
102 RaisePropertyChanged();
103
104 }
105 }
106 public DelegateCommand? AddCommand3
107 {
108 set; get;
109 }
110
111
112 private void Add3()
113 {
114 //写入需要执行的代码;
115
116 Value3 = random.Next().ToString();
117 MessageBox.Show(Value3);
118 }
119 //方法四
120 private string _value4 = "Prism命令学习";
121 public string Value4
122 {
123 get
124 {
125 return _value4;
126 }
127 set
128 {
129 _value4 = value;
130 OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs(nameof(Value4)));
131
132 }
133 }
134 public DelegateCommand? AddCommand4
135 {
136 set; get;
137 }
138
139
140 private void Add4()
141 {
142 //写入需要执行的代码;
143
144 Value4 = random.Next().ToString();
145 MessageBox.Show(Value4);
146 }
147 //方法五
148 private bool _value5= false;
149 public bool Value5
150 {
151 get
152 {
153 return _value5;
154 }
155 set
156 {
157 _value5 = value;
158 SetProperty(ref _value5, value);
159
160
161 }
162 }
163 public DelegateCommand? AddCommand5
164 {
165 set; get;
166 }
167
168
169 private void Add5()
170 {
171 //写入需要执行的代码;
172
173 Value5=true;
174 MessageBox.Show(Value5.ToString());
175 }
176 }

数据改变后更新UI(SetProperty/RaiseCanExecuteChanged)的更多相关文章

  1. WPF 修改数据后更新UI

    ObservableCollection<T> 只有项添加或删除才会更新UI 要想属性发生变动后立刻更新到UI,必须继承 INotifyPropertyChanged 接口,示例如下 pu ...

  2. vue中当数据改变时更新DOM

    具体场景: 当vue中使用swiper, better-scroll时候,我们需要去new Swiper,new [better-scroll]来获取实例,通常我们页面的数据都是异步获取的, 会导致我 ...

  3. echarts在数据改变后,折线图并没有全部刷新

    在做一个BI项目的时候,图表需要区分国内和国外显示.当前用户所属企业具备国内外权限的时候,展示两条图表,当查看其他企业需要根据选中的企业所具备的权限改变图表.即刚开始显示两条折线图,更改选择条件并重新 ...

  4. extjs grid数据改变后刷新的实现

    做了一个编辑extjs grid记录的窗体,但更改数据后,怎么重新刷新grid让数据显示呢? 做了半天的尝试,其实到最后只需一句话,faint:-) this.store.reload(); 不用加任 ...

  5. Bundle传递数据,Handler更新UI

    Bundle主要用于传递数据:它保存的数据,是以key-value(键值对)的形式存在的. Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean.byte.in ...

  6. Flutter学习笔记(31)--异步更新UI

    如需转载,请注明出处:Flutter学习笔记(31)--异步更新UI 大家都知道,子线程不能操作UI控件,在我们Android的日常开发中,经常会遇到网络请求数据通过线程间通信,将数据发送到UI线程中 ...

  7. 关于Handler的理解,子线程不能更新UI的纠正和回调的思考

    开发Android这么久了,总会听到有人说:主线程不能访问网络,子线程不能更新UI.Android的主线程的确不能长时间阻塞,但是子线程为什么不能更新UI呢?今天把这些东西整理,顺便在子线程更新UI. ...

  8. 使用Handler类来更新UI

    在android里面,我们经常要上网获取一些数据,然后更新UI,但获取数据是要时间的,如果在主线程里面直接使用获取数据的代码的话.整个activity就会卡在那,直至你获取到数据更新完UI才会加载完成 ...

  9. 【WPF】修改数据层ViewModel后,UI界面未同步更新

    界面:WPF(MVVM)中将集合类控件ItemsControl的ItemsSource绑定到了ViewModel中的ObservableCollection列表,ItemsControl.ItemTe ...

  10. 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~

    前日,一小伙伴问我一个问题,说它解决了半天都没解决这个问题,截图如下: 大概楼主理解如下: 如果在应用中有一个判断wifi的开关和一个当前音量大小的seekbar以及一个获取当前电量多少的按钮,想知道 ...

随机推荐

  1. Three.js实现可透视的水面效果

    1. 引言 Three.js是著名的JavaScript 3D图形库,用于浏览器中开发 3D 交互场景的 JS 引擎,可以快速的搭建三维场景 Three.js官网为:创建一个场景 – three.js ...

  2. 大模型时代的PDF解析工具

    去年(2023年)是大模型爆发元年.但是大模型具有两个缺点:缺失私有领域知识和幻觉.缺失私有领域知识是指大模型训练时并没有企业私有数据/知识,所以无法正确回答相关问题.并且在这种情况下,大模型会一本正 ...

  3. 《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南 - 第1章

    本章勘误: 暂无,等待细心的你告诉我哦. 本章注解: 第7页图1-4下面的第一段:堆栈从一开始就与计算机编程有着内在的联系,这主要是因为子例程的概念 什么是子例程呢? 一般地认为,子例程是某个主程序的 ...

  4. mybatis 中 if else 写法

    mybaits 中没有else要用chose when otherwise 代替 <choose> <when test=""> //... </wh ...

  5. 关于tomcat容器抛出的异常解决方案之一

    1,描述 问题类型:调试信息泄露 如: 现要求:前端页面不显示调试信息. 解决方案: 替换默认的tomcat <dependency> <groupId>org.springf ...

  6. linux 简单的mysql备份和导入

    linux 简单的mysql备份和导入 一.数据库的备份与导入 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 例:mysqldump -u dbadmi ...

  7. ssh登录太慢了,每次都要20s

    背景 大家工作时,少不了ssh登录各个服务器,我这边手里也有很多服务器,有一些登录很快就进去了,有些要卡半天才能进去.之前以为是公司网络问题,每次也就忍了,这次突然不想忍了,决定定位一下. 我这边的服 ...

  8. Avalonia的模板控件(Templated Controls)

    在Avalonia的UI框架中,TemplatedControl是一个核心组件,它提供了一种强大的方式来创建可重用且高度可定制的控件. 本文将深入探讨TemplatedControl的概念.其带来的优 ...

  9. std::thread 二:互斥量(带超时的互斥量 timed_mutex())

    timed_mutex . try_lock_for . try_lock_until #include <iostream> #include <thread> #inclu ...

  10. Graph Embedding-DeepWalk

    一言以蔽之,DeepWalk是在graph上,通过随机游走来产生一段定长的结点序列,并将其通过word2vec的方式获得各个结点的embedding的算法. DeepWalk一共涉及以下几个内容: 随 ...