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

打印 上一主题 下一主题

主题 1770|帖子 1770|积分 5310

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前言

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

一、自定义控件部门

为自定以控件设置 DataTag和SelectedI属性。
  1. <UserControl x:Class="Module3DS.Components.DataList"
  2.              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5.              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6.              xmlns:local="clr-namespace:Module3DS.Components"
  7.              mc:Ignorable="d"
  8.              d:DesignHeight="250" d:DesignWidth="300">
  9.     <GroupBox Grid.Column="0" Header="数据列表">
  10.         <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">
  11.             <DataGrid.Columns>
  12.                 <DataGridTextColumn Binding="{Binding NUM}"  Header="一" Width="1*"  IsReadOnly="True"/>
  13.                 <DataGridTextColumn Binding="{Binding STAKEKM}" Header="二" IsReadOnly="True" Width="2*"/>
  14.             </DataGrid.Columns>
  15.         </DataGrid>
  16.     </GroupBox>
  17. </UserControl>
复制代码
控件后端:
  1.    public partial class DataList : UserControl
  2.    {
  3.        public DataList()
  4.        {
  5.            InitializeComponent();
  6.            //
  7.            BingdingFun("TagData", DataGrid.TagProperty);
  8.            BingdingFun("SelectedI", DataGrid.SelectedIndexProperty);
  9.        }
  10.        private void BingdingFun(string name,DependencyProperty dp) {
  11.            Binding bing = new Binding(name);
  12.            bing.Source = this;
  13.            bing.Mode = BindingMode.TwoWay;
  14.            BindingOperations.SetBinding(PrjDg, dp, bing);
  15.        }
  16.        public static readonly DependencyProperty ISProperty = DependencyProperty.Register("TagData", typeof(Object), typeof(DataList));
  17.        public static readonly DependencyProperty SIProperty = DependencyProperty.Register("SelectedI", typeof(int), typeof(DataList));
  18.        public Object DataTag
  19.        {
  20.            get { return (Object)GetValue(ISProperty); }
  21.            set { SetValue(ISProperty, value); }
  22.        }
  23.        public int SelectedI {
  24.            get { return (int)GetValue(SIProperty); }
  25.            set { SetValue(SIProperty, value); }
  26.        }
  27. }      
复制代码
二、在页面中利用

  1. <Components:DataList Grid.Column="0" x:Name="Data3DList" DataTag="Data3D" />
复制代码
  1. <Components:DataList x:Name="IndexDataList" DataTag="DataIndex" />
复制代码
如此一来,我们的控件就有了DataTag和SelectedI属性,假如你利用的MVVM,还可以做到如下这样
  1. <Components:DataList x:Name="IndexDataList" DataTag="{Binding 属性}" SelectedI= "{Binding 属性}"/>
复制代码
总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表