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

【WPF】 自定义控件的自定义属性

文章目录

  • 前言
  • 一、自定义控件部分
  • 二、在页面中使用
  • 总结

前言

在一个页面,重复用到同一个自定义控件时,该如何对控件分别进行数据绑定呢?这时候可以赋予控件一个自定义的属性,来完成此操作。


一、自定义控件部分

为自定以控件设置 DataTag和SelectedI属性。

<UserControl x:Class="Module3DS.Components.DataList"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Module3DS.Components"mc:Ignorable="d" d:DesignHeight="250" d:DesignWidth="300"><GroupBox Grid.Column="0" Header="数据列表"><DataGrid x:Name="PrjDg" HeadersVisibility="Column" SelectedIndex="{Binding SelectedI}" ItemsSource="{Binding}" Tag="{Binding DataTag}"  ScrollViewer.VerticalScrollBarVisibility="Visible"   CanUserAddRows="False" AutoGenerateColumns="False" CanUserSortColumns="False" MouseDoubleClick="PrjDg_MouseDoubleClick"><DataGrid.Columns><DataGridTextColumn Binding="{Binding NUM}"  Header="一" Width="1*"  IsReadOnly="True"/><DataGridTextColumn Binding="{Binding STAKEKM}" Header="二" IsReadOnly="True" Width="2*"/></DataGrid.Columns></DataGrid></GroupBox>
</UserControl>

控件后端:

   public partial class DataList : UserControl{public DataList(){InitializeComponent();//BingdingFun("TagData", DataGrid.TagProperty);BingdingFun("SelectedI", DataGrid.SelectedIndexProperty);}private void BingdingFun(string name,DependencyProperty dp) {Binding bing = new Binding(name);bing.Source = this;bing.Mode = BindingMode.TwoWay;BindingOperations.SetBinding(PrjDg, dp, bing);}public static readonly DependencyProperty ISProperty = DependencyProperty.Register("TagData", typeof(Object), typeof(DataList));public static readonly DependencyProperty SIProperty = DependencyProperty.Register("SelectedI", typeof(int), typeof(DataList));public Object DataTag{get { return (Object)GetValue(ISProperty); }set { SetValue(ISProperty, value); }}public int SelectedI { get { return (int)GetValue(SIProperty); }set { SetValue(SIProperty, value); }}
}      

二、在页面中使用

<Components:DataList Grid.Column="0" x:Name="Data3DList" DataTag="Data3D" />
<Components:DataList x:Name="IndexDataList" DataTag="DataIndex" />

如此一来,我们的控件就有了DataTag和SelectedI属性,如果你使用的MVVM,还可以做到如下这样

<Components:DataList x:Name="IndexDataList" DataTag="{Binding 属性}" SelectedI= "{Binding 属性}"/>

总结

以上就是如何为自定义控件添加自定义属性了,我们下次再见,拜拜。

http://www.xdnf.cn/news/3259.html

相关文章:

  • OpenCV颜色变换cvtColor
  • UE中通过AAIController::MoveTo函数巡逻至目标点后没法正常更新巡逻目标点
  • 力扣349 == 两个数组交集的两种解法
  • selenium 实现模拟登录中的滑块验证功能
  • 【文献笔记】LLM-based control code generation using image recognition
  • 详细讲解一下Java中的Enum
  • Missashe考研日记-day22
  • AI与物联网的深度融合:开启智能生活新时代
  • 写书的三驾马车
  • 【Unity】UI点击事件处理器
  • 文件系统 软硬连接
  • 类和对象(下篇)(详解)
  • 2025.4.20机器学习笔记:文献阅读
  • 【前端】跟着maxkb学习流程图画法
  • Qt QML实现Windows桌面歌词动态播放效果
  • Win10如何一键切换IP地址教程
  • ubtuntu安装docker拉取iwebsec镜像
  • 关于STM32G030和G070未初始化看门狗,程序里面喂狗会导致擦除Flash失败或进入‘HardFault_Handler’
  • WebSocket 实现数据实时推送原理
  • GPT,Bert类模型对比
  • 4.17---实现商铺和缓存与数据库双写一致以及宕机处理
  • 2025.04.17【Dendrogram】生信数据可视化:Dendrogram图表详解
  • 网络编程 - 1
  • Genspark:重新定义AI搜索与代理的全能型工具
  • 私人笔记:动手学大模型应用开发llm-universe项目环境创建
  • 【前端vue生成二维码和条形码——MQ】
  • 【随身WIFI】随身WiFi Debian系统优化教程
  • AUTOSAR图解==>AUTOSAR_SWS_DefaultErrorTracer
  • 计算机网络 - UDP协议
  • 4.15BUUCTF Ez_bypass,HardSQL,AreUSerialz,BabyUpload,CheckIn