首页 > 其他分享 >Handycontrol组件库的Bug

Handycontrol组件库的Bug

时间:2024-06-13 22:33:46浏览次数:25  
标签:Handycontrol 绑定 Binding PasswordBoxProvider 组件 Password pwdBehavior Bug 属性

我的WPF程序使用了Handycontrol组件库,前端写了

 <Button
       Width="100"
       Height="30"
       Margin="40,20,20,-100"
       HorizontalAlignment="Center"
       Background="#FF0078D7"
       Command="{Binding LoginCommand}"
       CommandParameter="{Binding Password}"
       Content="登录"
       IsDefault="True" />
	   <hc:PasswordBox
      x:Name="txtPassword"
      Width="250"
      Margin="10,0"
      hc:InfoElement.Placeholder="请输入密码"
      pwdBehavior:PasswordBoxProvider.Attach="True"
      pwdBehavior:PasswordBoxProvider.Password="{Binding Password, Mode=TwoWay}"
      CaretBrush="#FFD94448"
      FontSize="16"
      SelectionBrush="#FFD94448"
      ShowEyeButton="True" />

1、因为不管是原生的WPF还是Handycontrol组件库,里面的密码框的Password属性都是普通属性,不是依赖属性,不能进行绑定,所以我必须自己写一个依赖属性,如,我上面写的

pwdBehavior:PasswordBoxProvider.Password="{Binding Password, Mode=TwoWay}"

我可以显示的在后台ViewModel代码中绑定它,

 private string _password;
 public string Password
  {
      get => _password;
      set => SetProperty(ref _password, value); 
  }

然后去写构造函数去写

Password = "123456";

那么启动程序界面上密码框显示123456,这是没问题的,
并且我登录的参数也绑定了Password,也没问题也能传递过来值,
现在假如我登录的参数不直接绑定后台ViewModel的Password,

 CommandParameter="{Binding ElementName=txtPassword,Path=(pwdBehavior:PasswordBoxProvider.Password)}"

只要构造器的 Password = "123456";存在,那么我这两种写法都是没问题的,
但是假如我的构造器不去主动的写 Password = "123456";那么启动程序后界面密码框是空的,需要我去输入,我不管输入多少,这个密码框走的是密码框的普通属性Password,而不是

pwdBehavior:PasswordBoxProvider.Password="{Binding Password, Mode=TwoWay}"

因为自从我写了 pwdBehavior:PasswordBoxProvider.Password="{Binding Password, Mode=TwoWay}"后,实际上密码框存在两个Password属性,一个是pwdBehavior:PasswordBoxProvider.Password依赖属性,一个是Password普通属性,
而如果我在后台的构造器不去显示的指定绑定,那么前端输入的会是走的Password的线路,而不去走pwdBehavior:PasswordBoxProvider.Password,至此绑定失效,传参失效,
而为了测试我登录按钮绑定是否有问题我写了

CommandParameter="{Binding ElementName=txtUsername,Path=Text}"
CommandParameter="{Binding ElementName=txtPassword,Path=Password}"

去做不同的测试,结果 CommandParameter="{Binding ElementName=txtPassword,Path=Password}"不起作用, CommandParameter="{Binding ElementName=txtUsername,Path=Text}"起作用,
说明问题出在控件本身上,是Handycontrol在Password和 pwdBehavior:PasswordBoxProvider.Password之间不知道该如何选择,所以两者都没选,是为null

标签:Handycontrol,绑定,Binding,PasswordBoxProvider,组件,Password,pwdBehavior,Bug,属性
From: https://www.cnblogs.com/guchen33/p/18246889

相关文章

  • Radix UI:构建一致且可访问的 React 组件库
    RadixUI:构建一致且可访问的React组件库简介在当今的前端开发领域,React以其声明式编程范式和组件化架构,成为最受欢迎的JavaScript库之一。然而,创建一致的用户体验和可访问的界面往往需要大量的工作。这就是RadixUI组件库发挥作用的地方。什么是RadixUI?RadixU......
  • React函数式组件环境中父组件调用子组件的方法
    importReact,{useRef,useCallback}from'react';//子组件constChildComponent=React.forwardRef((props,ref)=>{constdoSomething=useCallback(()=>{console.log('Dosomethinginthechildcomponent');},[]);......
  • uni-app在微信小程序端自定义组件中样式穿透失效
    前情uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验非常棒,公司项目就是主推uni-app。坑位最近因UI有别的事忙,导致手上暂时没什么活了,我于是抽时间优化项目代码,第一件事就是抽取复用组件。正好项目中有多处用到uVie......
  • 界面控件DevExpress WinForms垂直&属性网格组件 - 拥有更灵活的UI选择(一)
    DevExpressWinForms垂直&属性网格组件旨在提供UI灵活性,它允许用户显示数据集中的单个行或在其90度倒置网格容器中显示多行数据集。另外,用户可以把它用作一个属性网格,就像在VisualStudioIDE中那样。P.S:DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有......
  • vite+vue3展示文件夹内的所有组件
    https://www.cnblogs.com/y-shmily/p/16546743.html 在组件目录下新建index.jsimport{markRaw}from"vue";constfilesNameList=[];constfiles=import.meta.glob("./*.vue");for(constkeyinfiles){constfileName=key.replace(/(\.......
  • vue 父子组件交互 props,emit,slot
    props 子组件可以通过 props 从父组件接受动态数据vue2 vue3defineProps() 是一个编译时宏,并不需要导入   emit()emit()子组件向父组件触发事件vue2this.$emit() 的第一个参数是事件的名称。其他所有参数都将传递给事件监听器。 vue3emit() 的第一个参......
  • Unity Camera组件ClearFlags属性介绍以及区分UI摄像机和角色摄像机
    在Unity中,Camera.clearFlags属性用于定义相机在渲染场景之前如何清除屏幕。这个属性有几个不同的选项,每个选项都会以不同的方式清除屏幕。具体选项如下:Skybox:如果相机有分配的天空盒(Skybox),在渲染场景之前将用天空盒来清除屏幕。如果没有分配天空盒,则使用纯色来清除屏幕,颜色......
  • 使用windows的官方组件 把u盘 弄成pe系统
    下载工具https://learn.microsoft.com/en-us/windows-hardware/get-started/adk-install1、格式化自己的u盘2、拷贝pe文件到u盘3、设置u盘为pe启动项安装好adk跟pe插件后。在菜单里面有一个”部署跟环境工具“管理员身份运行,执行copypeamd64C:\WinPE_amd64其中C:......
  • element ui 封装Table组件
    1.首先npmielement-ui-S安装element-ui2.引入Element在main.js中写入以下内容:importVuefrom'vue';importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css';importAppfrom'./App.vue';Vue.use(Ele......
  • React核心概念、主要特点及组件的生命周期
    在前端开发的世界中,React以其独特的魅力和强大的功能,成为了构建用户界面的首选框架之一。本文将深入探讨React的核心概念、主要特点以及组件生命周期React简介React是由Facebook开发并开源的前端JavaScript库,专门用于构建可重用的UI组件。它首次发布于2013年,并迅速成为最......