首页 > 其他分享 >WPF设置传参、点击按钮改变长度

WPF设置传参、点击按钮改变长度

时间:2023-08-29 11:22:27浏览次数:43  
标签:传参 Command3 DelegateCommand private Command2 按钮 WPF btn parameter

前台代码

 <!--  通过传递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是只读的,你可以传递一个实体,然后修改实体的属性,但是传递的参数本身应该是只读的,这是我个人的理解,如果能直接传递宽度实现宽度改变的,希望留下代码,一起交流

标签:传参,Command3,DelegateCommand,private,Command2,按钮,WPF,btn,parameter
From: https://www.cnblogs.com/guchen33/p/17664283.html

相关文章

  • Unity UnityWebRequest.Post传参Json数据
    UnityWebRequest.PostUnity中的HTTP通信主要依赖的是Unity自带的UnityWebRequest类,之前的WWW类已被弃用Post请求,向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。对应的调用方法:UnityWebR......
  • iOS开发Swift-3-UI与按钮Button-摇骰子App(1)
    1.创建新项目Dice 2.图标 删去AppIcon,将解压后的AppIcon.appiconset文件拖入Assets包。 3.将素材点数1-6通过网页制作成2x,3x版本并拖入Asset。 4.设置对应的UI。 5.拖入Button组件并设置style。 6.Ctrl加拖拽将Button拖拽到ViewController里,并设置Connection,Nam......
  • C# wpf 实现窗口靠近屏幕边缘自动吸附
    参考:https://blog.csdn.net/qq_35831134/article/details/88751067#region侧吸privatenewboolHide=false;//用来表示当前隐藏状态,例如Hide=false就是不在隐藏状态stringtype="";//用来表示窗口隐藏在哪个方向pri......
  • 为WPF按钮添加UAC盾牌图标
    在上一篇文章中,介绍了如何获取系统Shell的图标。在C#中调用SHGetStockIconInfo即可获取获取图标 定义SHGetStockIconInfo函数用到的数据结构1publicenumSHSTOCKICONID:uint2{3///<summary>Documentofatypewithnoassociatedapplicatio......
  • 按钮防重复提交
    main.js添加代码//防多次点击,重复提交Vue.directive('preventReClick',{inserted(el,binding){el.addEventListener('click',()=>{if(!el.disabled){el.disabled=truesetTimeout(()=>{el.disabled......
  • WPF-封装自定义雷达图控件
     源码地址:https://gitee.com/LiuShuiRuoBing/code_blog雷达图用于表示不同内容的占比关系,在项目中有广泛的应用,但是目前未曾有封装良好的雷达图控件,鉴于最近项目的使用,于是想要封装一个通用的雷达图控件,便于日后的扩展使用。首先雷达图的绘制大概分为雷达图的图层、......
  • React加载组件后自动触发某函数,而不需要点击按钮
    问题在项目中使用了ReactToPrint来实现打印,但是trigger属性中的按钮需要点击才能执行打印。期望能在组件加载完成时自动执行打印方法。解决可在组件加载完成时,通过id获取组件,并执行该组件的click方法。代码如下:importReact,{useRef,useEffect}from'react';//.........
  • WPF使用TextBlock实现查找结果高亮显示
    在应用开发过程中,经常遇到这样的需求:通过关键字查找数据,把带有关键字的数据显示出来,同时在结果中高亮显示关键字。在web开发中,只需在关键字上加一层标签,然后设置标签样式就可以轻松实现。在WPF中显示文本内容通常采用TextBlock控件,也可以采用类似的方式,通过内联流内容元素Run达到......
  • 黑魂242 动作按钮
    在IUserInput脚本里添加一个新的布尔值: 然后在KeyBoardInput脚本里添加这个变量的键位: 在ActorController脚本添加这两行代码: 在下面写一个判断式,当控制键action触发时,唤醒OnAction。 ......
  • flutter中通过遍历一个数组,给每个元素添加一个开关按钮怎么写
    要通过遍历一个数组给每个元素添加一个开关按钮,你可以使用ListView.builder来构建一个包含开关按钮的列表。下面是一个示例,展示了如何遍历一个数组并为每个元素添加一个开关按钮:List<bool>switchValues=List.generate(5,(index)=>false);ListView.builder(itemCount:sw......