2021-11-30 wpf的mvvm绑定2
主页页面代码
<Grid>
<TextBox x:Name="First" Width="80" Height="20"
Text="{Binding Value,UpdateSourceTrigger=PropertyChanged}"
Foreground="{Binding BorderColor}"></TextBox>
<Button x:Name="Second"
Width="100"
Height="30"
HorizontalAlignment="Left"
Margin="80,0"
Content="按钮"
Command="{Binding ValueCommand}"
CommandParameter="123"
></Button>
</Grid>
主页后台代码
public partial class MainWindow : Window
{
MainViewModel mainViewModel = null;
public MainWindow()
{
InitializeComponent();
mainViewModel = new MainViewModel();
this.DataContext = mainViewModel;
}
}
CommandBase定义类代码
public class CommandBase : ICommand
{
public event EventHandler CanExecuteChanged; public bool CanExecute(object parameter)
{
return DoCanExecute?.Invoke(parameter)==true;
} public void Execute(object parameter)
{
DoAction?.Invoke(parameter);
}
public Action<object> DoAction { get; set; }
public Func<object,bool> DoCanExecute { get; set; } public void RaiseCanChanged()
{
CanExecuteChanged?.Invoke(this, new EventArgs());
}
}
ViewModel类代码
public class MainViewModel:INotifyPropertyChanged
{
private string _value="200";
public string Value
{
get { return _value; }
set {
_value = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value"));
(this.ValueCommand as CommandBase).RaiseCanChanged();
}
} private Brush _borderColor=Brushes.Red; public event PropertyChangedEventHandler PropertyChanged; public Brush BorderColor
{
get { return _borderColor; }
set { _borderColor = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("ValueColor"));
}
} private ICommand _valueCommand; public ICommand ValueCommand
{
get {
if (_valueCommand==null)
{
_valueCommand = new CommandBase() {
DoAction = new Action<object>(ValueCommandAction) ,
DoCanExecute=new Func<object, bool>(CanExecute)
};
}
return _valueCommand; }
set { _valueCommand = value; }
}
private void ValueCommandAction(object obj)
{
Value = "299";
} private bool CanExecute(object obj)
{
return !string.IsNullOrEmpty(Value);
}
}
2021-11-30 wpf的mvvm绑定2的更多相关文章
- 2021.11.30 eleveni的水省选题的记录
2021.11.30 eleveni的水省选题的记录 因为eleveni比较菜,eleveni决定先刷图论,再刷数据结构,同时每天都要刷dp.当然,对于擅长的图论,eleveni决定从蓝题开始刷.当然 ...
- .NET CORE(C#) WPF简单菜单MVVM绑定
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF简单菜单MVVM绑定 阅读导航 本文背景 代码实现 本文参考 ...
- WPF使用MVVM(一)-属性绑定
WPF使用MVVM(一)-属性绑定 简单介绍MVVM MVVM是Model(数据类型),View(界面),ViewModel(数据与界面之间的桥梁)的缩写,是一种编程模式,优点一劳永逸,初步增加一些逻 ...
- WPF使用MVVM(二)-命令绑定
WPF使用MVVM(二)-命令绑定 上一节已经介绍了WPF的属性绑定,这使得我们只需要指定界面的DataContext,然后就可以让界面绑定我们的属性数据呢. 但是上一节还遗留了一个问题就是我们的按钮 ...
- WPF中TreeView控件SelectedItemChanged方法的MVVM绑定
问题描述:左侧treeview控件中点击不同类别的节点时,右侧的页面会显示不同的权限.比如对于My Publications,拥有Modify和Delete两种权限,对于My Subscription ...
- WPF采用MVVM模式(绑定:纯前台、命令:触发器绑定命令)
MVVM绑定 view-viewModel-model,模型介绍省略,就是创建类,添加字段封装属性.注:控件的绑定只能绑定到属性上,不能绑定到字段上: 接下来就是代码 (view): <Wind ...
- 在XAML中为ItemsControl定义分组,适合mvvm绑定
可以先参考一下这个文章: http://www.cnblogs.com/zoexia/archive/2014/11/30/4134012.html step0: 先展示一下最简陋的界面: 上图是一个 ...
- 在WPF的MVVM框架中获取下拉选择列表中的选中项
文章概述: 本演示介绍怎样在WPF的MVVM框架中.通过数据绑定的方式获取下拉列表中的选中项.程序执行后的效果例如以下图所看到的: 相关下载(代码.屏幕录像):http://pan.baidu.com ...
- WPF使用MVVM(三)-事件转命令
WPF使用MVVM(三)-事件转命令 上一节介绍了WPF中的命令,可是仅仅介绍的是WPF框架给我们提供的点击命令,也就是用Command属性来绑定一个命令,用来响应按钮的点击行为!显然这是不够的,界面 ...
- WPF 微信 MVVM 【续】发送部分QQ表情
今天主要记录的就是发送QQ表情, WPF 微信 MVVM里写了,后期为了发送QQ表情,需要把TextBox替换为RichTextBox,接下来就说说替换的过程. 一.支持Binding的RichTex ...
随机推荐
- python字符串集合面试笔试题
python字符串面试笔试题 以下代码的输出是? s = 'foo' t = 'bar' print('barf' in 2 * (s + t)) A.True B.Fasle +运算符连接字符串,而 ...
- awk判断整除(包含小数和负数)
awk判断整除常用的方法是用内置的int或者求余数的算符% 被整数整除 输出0-100之间能被9整除的整数 使用 num/9==int(num/9) 的判断方法可以很好实现. awk 'BEGIN{ ...
- Vue中插槽的使用
1.作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于 父组件 ===> 子组件 . 2.分类:默认插槽.具名插槽.作用域插槽 3.使用方式: ①默认插槽 ...
- Python-psycopg2的简单使用
一.简介 psycopg2 库是 python 用来操作 postgreSQL 数据库的第三方库. 二.安装 1.执行如下命令安装 pip3 install psycopg2 2.使用Pycharm安 ...
- css知识点简记
1.改变position: fixed; 定位基准元素的方式,父级以上元素的: ① tranform属性值不为none的元素 ② perspective值不为none的元素 ③ will-change ...
- 【Visual C#】基于《斗鱼弹幕服务器第三方接入协议v1.6.2》实现斗鱼弹幕服务器接入
最近在给某个主播开发斗鱼直播间辅助工具,为了程序的高效稳定,也搜索了大量的资料,经过大量什么百度,谷歌搜索... 虽然有很多Python的脚本及JS脚本实现了拉取斗鱼弹幕信息,但是这些年来的开发职业病 ...
- 2022-11-06:给定平面上n个点,x和y坐标都是整数, 找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的。 返回最短距离,精确到小数点后面4位。
2022-11-06:给定平面上n个点,x和y坐标都是整数, 找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的. 返回最短距离,精确到小数点后面4位. 答案2022-11- ...
- 2021-08-15:给定一个字符串Str,返回Str的所有子序列中有多少不同的字面值。
2021-08-15:给定一个字符串Str,返回Str的所有子序列中有多少不同的字面值. 福大大 答案2021-08-15: 返回值=上+新-修正. 时间复杂度:O(N) 空间复杂度:O(N). 代码 ...
- HCIP- ICT实战进阶ex1-MPLS
HCIP- ICT实战进阶ex1-MPLS 0 前言 由于BGP设备之间是通过TCP协议实现的跨设备互联, 所以在两台BGP设备之间的其他设备是没有配置BGP协议的, 因此中间的其他设备很可能无法学习 ...
- 人工智能导论——机器人自动走迷宫&强化学习
一.问题重述 强化学习是机器学习中重要的学习方法之一,与监督学习和非监督学习不同,强化学习并不依赖于数据,并不是数据驱动的学习方法,其旨在与发挥智能体(Agent)的主观能动性,在当前的状态(stat ...