当前位置: 首页 > news >正文

网站开发常见面试东莞网站优化关键词推广

网站开发常见面试,东莞网站优化关键词推广,网站建设系统计公司,酷站字体行为的好处 可以把复杂的界面逻辑抽象出去&#xff0c;让xaml的界面设计更简单&#xff0c;更清爽 1.安装包 Microsoft.Xaml.Behaviors.Wpf2.简单实现拖动效果 <Border Width"100"Height"100"Background"Red"><i:Interaction.Behav…

行为的好处

可以把复杂的界面逻辑抽象出去,让xaml的界面设计更简单,更清爽

1.安装包

Microsoft.Xaml.Behaviors.Wpf

2.简单实现拖动效果

<Border Width="100"Height="100"Background="Red"><i:Interaction.Behaviors><i:MouseDragElementBehavior /></i:Interaction.Behaviors>
</Border>

3.简单自定义一个行为

定义一个情况文本框的行为

public class ClearTextBoxBehavior : Behavior<Button>
{// 定义依赖属性,用于绑定目标 TextBoxpublic TextBox TargetTextBox{get => (TextBox)GetValue(TargetTextBoxProperty);set => SetValue(TargetTextBoxProperty, value);}public static readonly DependencyProperty TargetTextBoxProperty =DependencyProperty.Register(nameof(TargetTextBox),typeof(TextBox),typeof(ClearTextBoxBehavior),new PropertyMetadata(null));protected override void OnAttached(){base.OnAttached();AssociatedObject.Click += OnButtonClick; // 订阅按钮点击事件}protected override void OnDetaching(){base.OnDetaching();AssociatedObject.Click -= OnButtonClick; // 清理事件}private void OnButtonClick(object sender, RoutedEventArgs e){TargetTextBox?.SetCurrentValue(TextBox.TextProperty, string.Empty); // 清空文本框TargetTextBox?.Focus(); // 可选:清空后聚焦文本框}
}

引入

xmlns:local1="clr-namespace:TestBinding.Behaviors"
<StackPanel><TextBox Height="30"Name="txtInput"></TextBox><Button Height="30"><i:Interaction.Behaviors><local1:ClearTextBoxBehavior TargetTextBox="{Binding ElementName=txtInput}" /></i:Interaction.Behaviors></Button>
</StackPanel>

一个可以按上键增加值下键减少值的TextBox

public class NumericUpDownBehavior : Behavior<TextBox>
{// 定义依赖属性:最小值、最大值、步长public double Min{get => (double)GetValue(MinProperty);set => SetValue(MinProperty, value);}public static readonly DependencyProperty MinProperty =DependencyProperty.Register(nameof(Min),typeof(double),typeof(NumericUpDownBehavior),new PropertyMetadata(double.MinValue)); // 默认无下限public double Max{get => (double)GetValue(MaxProperty);set => SetValue(MaxProperty, value);}public static readonly DependencyProperty MaxProperty =DependencyProperty.Register(nameof(Max),typeof(double),typeof(NumericUpDownBehavior),new PropertyMetadata(double.MaxValue)); // 默认无上限public double Step{get => (double)GetValue(StepProperty);set => SetValue(StepProperty, value);}public static readonly DependencyProperty StepProperty =DependencyProperty.Register(nameof(Step),typeof(double),typeof(NumericUpDownBehavior),new PropertyMetadata(1.0)); // 默认步长=1protected override void OnAttached(){base.OnAttached();AssociatedObject.PreviewKeyDown += OnKeyDown;AssociatedObject.LostFocus += OnLostFocus;}protected override void OnDetaching(){base.OnDetaching();AssociatedObject.PreviewKeyDown -= OnKeyDown;AssociatedObject.LostFocus -= OnLostFocus;}private void OnKeyDown(object sender, KeyEventArgs e){if (e.Key == Key.Up || e.Key == Key.Down){// 解析当前值(兼容不同文化的小数点)var text = AssociatedObject.Text.Replace(",", "."); // 统一小数点格式if (!double.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out var currentValue))currentValue = 0;// 计算新值并限制范围var step = e.Key == Key.Up ? Step : -Step;currentValue = Math.Clamp(currentValue + step, Min, Max);// 更新文本框AssociatedObject.Text = currentValue.ToString(CultureInfo.InvariantCulture);AssociatedObject.CaretIndex = AssociatedObject.Text.Length;e.Handled = true;}}private void OnLostFocus(object sender, RoutedEventArgs e){// 失去焦点时格式化并重新检查范围if (double.TryParse(AssociatedObject.Text, NumberStyles.Any, CultureInfo.InvariantCulture, out var value)){var clampedValue = Math.Clamp(value, Min, Max);AssociatedObject.Text = clampedValue.ToString(CultureInfo.InvariantCulture);}else{AssociatedObject.Text = Min.ToString(CultureInfo.InvariantCulture); // 非法输入时重置为最小值}}
}

输入时可以定制最大值、最小值、步长

<TextBox Height="30"Name="txtInput"><i:Interaction.Behaviors><local1:NumericUpDownBehavior Max="100" Min="0" Step="3" /></i:Interaction.Behaviors>
</TextBox>
http://www.dtcms.com/a/414186.html

相关文章:

  • GauGAN详解与实现
  • Word如何一次性合并多个文档
  • 互联网技术服务优化大师优化项目有
  • 状态管理库 Zustand 的接入流程与注意点
  • 河北网站建设推广电话wordpress网址导航主题
  • NFS 服务器 iSCSI 服务器
  • display this 概念、故障排错及题目
  • whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功
  • 个人用云计算学习笔记 --16(DHCP 服务器)
  • 【Linux】基础IO与文件描述符
  • ​​FFmpeg 教程:从入门到精通,探索多媒体处理的瑞士军刀​
  • 使用ffmpeg8.0的whisper模块语音识别
  • 免费版Markdown 编辑器:Typora
  • 个人建网站有什么好处网站运营需要 做哪些工作
  • MySQL库、表的操作
  • FileProvider 配置必须针对 Android 7.0+(API 24+)做兼容
  • 混合止损策略在加密货币交易中的应用
  • Java模拟实现socket通信
  • iSCSI服务器
  • PyQt5 界面美化:从基础到高级的完整指南
  • 【Linux系列】让 Vim “跑”起来:实现一个会动的进度条
  • 上海商务网站建设wordpress 云相册
  • LLM - 构建AI智能体的完整指南:7步流程图与框架实战
  • springboot523基于Spring Boot的大学校园生活信息平台的设计与实现
  • Kubernetes 安全管理:认证、授权与准入控制全面解析
  • 江苏省住房城乡建设厅门户网站淄博企业网站
  • SpringBoot整合JakartaMail,实现发送邮箱功能
  • 开发 Flutter Windows 应用,如何安装工具链工具链和SDK
  • 杂记 10
  • 错误解决:Flutter找不到合适的Visual Studio 工具链