[WPF] UserControl的xaml里使用自定义属性

场景一:在创建wpf 用户控件的时候,需要在Xaml里使用该控件的自定义属性等。

解决方案一:可以通过属性绑定,查找绑定自定义属性;

解决方案二:可以将该用户控件的DataContext绑定自身;

以下为实现方式:

方案一(查找绑定自定义属性):

缺点:每个属性的绑定都需要写长长的一串筛选条件,看起来并不简洁;

   public partial class UcTest : UserControl
    {
        public UcTest ()
        {
            InitializeComponent();
        }
        public string UcProperty
        {
            get { return (string)GetValue(UcPropertyProperty); }
            set { SetValue(UcPropertyProperty, value); }
        }

        public static readonly DependencyProperty UcPropertyProperty =
            DependencyProperty.Register("UcProperty", typeof(string), typeof(UcTest), new PropertyMetadata(""));

    }
}

    
        
    

方案二(绑定DataContext):

绑定DataContext也有两种绑定方式,如下所示:

方式一:(后台绑定)在构造函数里添加绑定:

缺点:该方式在Xaml绑定属性时没有智能提示;

优点:相对方案一,更为简洁;

this.DataContext = this;
   public partial class UcTest : UserControl
    {
        public UcTest ()
        {
            InitializeComponent();
            this.DataContext = this;
        }
        public string UcProperty
        {
            get { return (string)GetValue(UcPropertyProperty); }
            set { SetValue(UcPropertyProperty, value); }
        }

        public static readonly DependencyProperty UcPropertyProperty =
            DependencyProperty.Register("UcProperty", typeof(string), typeof(UcTest), new PropertyMetadata(""));

    }
}

    
        
    

方式二:(前台绑定/Xaml绑定)在Xaml里,想要绑定的属性的节点的上级以上的节点进行绑定:

优点:1.相对方案一,更为简洁;2.在Xaml绑定属性时有智能提示;

   public partial class UcTest : UserControl
    {
        public UcTest ()
        {
            InitializeComponent();
        }
        public string UcProperty
        {
            get { return (string)GetValue(UcPropertyProperty); }
            set { SetValue(UcPropertyProperty, value); }
        }

        public static readonly DependencyProperty UcPropertyProperty =
            DependencyProperty.Register("UcProperty", typeof(string), typeof(UcTest), new PropertyMetadata(""));

    }
}

    
        
    


 

你可能感兴趣的:(C#,.Net,WPF)