WPF设置传参、点击按钮改变长度
前台代码
<!-- 通过传递ElementName -->
<Button
x:Name="btn1"
Width="200"
Height="27"
Command="{Binding Command}"
CommandParameter="{Binding ElementName=btn1}" />
<!-- 通过传递自身 -->
<Button
Grid.Row="1"
Width="200"
Height="27"
Command="{Binding Command2}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self}}" />
<!-- 通过传递Width Width是只读的,这种方法行不通,哪怕设置双向也不行,-->
<Button
Grid.Row="2"
Width="200"
Height="27"
Command="{Binding Command3}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Width,UpdateSourceTrigger=PropertyChanged}" />
后台代码
private DelegateCommand<Button> _Command;
public DelegateCommand<Button> Command =>
_Command ?? (_Command = new DelegateCommand<Button>(ExecuteCommand, CanExecuteCommand));
private void ExecuteCommand(object parameter)
{
var btn = parameter as Button;
btn.Width = 500;
}
private DelegateCommand<Button> _Command2;
public DelegateCommand<Button> Command2 =>
_Command2 ?? (_Command2 = new DelegateCommand<Button>(ExecuteCommand2));
private void ExecuteCommand2(object parameter)
{
var btn = parameter as Button;
btn.Width = 500;
}
private DelegateCommand<double> _Command3;
public DelegateCommand<double> Command3 =>
_Command3 ?? (_Command3 = new DelegateCommand<double>(ExecuteCommand3));
private void ExecuteCommand3(double parameter)
{
Application.Current.Dispatcher.Invoke(() =>
{
var width=parameter;
width = 500;
});
}
private bool CanExecuteCommand(object parameter)
{
return true;
}
第三种报错,因为Width是只读的,你可以传递一个实体,然后修改实体的属性,但是传递的参数本身应该是只读的,这是我个人的理解,如果能直接传递宽度实现宽度改变的,希望留下代码,一起交流
WPF设置传参、点击按钮改变长度的更多相关文章
- 怎么用js设置a标签点击链接改变当前颜色
怎么用js设置a标签点击链接改变当前颜色 20 例如:多个a标签为白色,当点击其中一个a标签时改变那一个a标签的字体颜色为黄色,并且跳转到对应链接,当点击下一个a标签链接时,下一个为黄色,之前一个恢复 ...
- vue踩坑之路--点击按钮改变div样式
有时候,我们在做项目的时候,想通过某个按钮来改变某个div样式,那么可以通过以下代码实现: <!DOCTYPE html> <html> <head> <me ...
- iOS 之点击按钮改变状态的图片
.h 文件中 @property (strong, nonatomic) IBOutletUIButton *publishBtton; @property (strong, nonatomic) ...
- 二、JavaScript之点击按钮改变HTML样式 (CSS)
一.代码如下 二.点击前 三.点击后 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" c ...
- 点击按钮改变标签内容(采用lambda函数方式)
from Tkinter import* window=Tk() counter=IntVar() counter.set(0) def click(variable,value): variable ...
- 点击按钮改变div背景色,再次点击恢复 -- 原生JS
如果对您有帮助,记得点个赞哦!
- 【WPF】CommandParameter解决多传参问题
方法一:传参按钮控件自身绑定的ItemSource 用WAF框架实现MVVM,按钮的点击事件都要通过Command来传递到这个View对应的ViewModel上,再通过ViewModel传递到上层的C ...
- Android基础TOP5_4:点击按钮更换样式,设置透明度
在res/drawable创建两个样式 点击前/点击后 round: <?xml version="1.0" encoding="utf-8"?> ...
- Vue之路由跳转 传参 aixos 和cookie
一.路由跳转 1.1 项目的初始化 vue create m-proj >>>创建vue项目 精简vue项目的 views 视图 About(基本是删除的) Home.(可以 ...
- react中的传参方式
react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a na ...
随机推荐
- JS leetcode 翻转字符串里的单词 题解分析
壹 ❀ 引 今天来做一道难度中等,但实际难度并不是很高的题目,题目来源leetcode151. 翻转字符串里的单词,题目描述如下: 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: & ...
- vue3的宏到底是什么东西?
前言 从vue3开始vue引入了宏,比如defineProps.defineEmits等.我们每天写vue代码时都会使用到这些宏,但是你有没有思考过vue中的宏到底是什么?为什么这些宏不需要手动从vu ...
- Shiro 框架的MD5加密算法实现原理
直接上代码:该代码可以直接用于项目中做MD5加密,加盐加密,多层散列加密 import java.io.UnsupportedEncodingException; import java.securi ...
- junit使用mock objects进行单元测试
上一篇我介绍了使用stub进行单元测试.那么mock objects和stub有何区别?什么情况下使用mock objects呢? 下面摘自junit in action书中的解释: mock obj ...
- node版本管理工具nvm的安装及使用
一.什么是nvm nvm是一个node版本管理工具. 由于不同项目依赖的node版本可能不同,所以在维护多个项目时通常需要使用不同的node版本,这时候用nvm来切换不同的node版本就很方便. 官方 ...
- python字典操作的大O效率
- 多线程系列(十) -ReadWriteLock用法详解
一.摘要 在上篇文章中,我们讲到ReentrantLock可以保证了只有一个线程能执行加锁的代码. 但是有些时候,这种保护显的有点过头,比如下面这个方法,它仅仅就是只读取数据,不修改数据,它实际上允许 ...
- github.com/mitchellh/mapstructure 教程
官网链接: github.com/mitchellh/mapstructure 本文只是简单的记录下 mapstructure 库的简单使用,想更加详细的学习,点击 Godoc 学习吧. 文中内容基本 ...
- 【Azure 应用服务】Storage Queue触发Azure Function时报错 The input is not a valid Base-64 string
问题描述 创建一个PowerShell脚本的Azure Function,触发方式为 Storage Queue.但执行函数结果一直失败 (Failed). 错误消息为: Executed 'Func ...
- Netty笔记(1) - Netty概述 和 框架结构
概述 基于NIO 的框架,目的是简化开发NIO的工作量 异步的 ,基于事件驱动的网络应用程序框架,用以快速开发高性能.高可靠性的网络 IO 程序 Netty 是目前最流行的 NIO 框架,Netty ...