دوستان و علاقمندان به مباحث WPF وقتتون بخیر. با آموزش WPF از وب سایت آموزشی پی وی لرن همراهتون هستیم. بررسی خواص وابسته در WPF یا Dependency Properties را در این بخش دنبال خواهیم نمود.
در برنامه های WPF ، خاصیت وابستگی نوع خاصی از خاصیت است که خاصیت CLR را گسترش می دهد. از مزایای عملکردهای خاص موجود در سیستم خاصیت WPF بهره می برد.
کلاسی که خاصیت وابستگی را تعریف می کند باید از کلاس DependencyObject به ارث برده شود. بسیاری از کلاس های کنترل UI که در XAML استفاده می شوند از کلاس DependencyObject گرفته شده اند و از خواص وابستگی پشتیبانی می کنند ، به عنوان مثال. کلاس Button از ویژگی وابستگی IsMouseOver پشتیبانی می کند.
کد XAML زیر یک دکمه با برخی خصوصیات ایجاد می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <Window x:Class = "WPFDependencyProperty.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local = "clr-namespace:WPFDependencyProperty" Title = "MainWindow" Height = "350" Width = "604"> <Grid> <Button Height = "40" Width = "175" Margin = "10" Content = "Dependency Property"> <Button.Style> <Style TargetType = "{x:Type Button}"> <Style.Triggers> <Trigger Property = "IsMouseOver" Value = "True"> <Setter Property = "Foreground" Value = "Red" /> </Trigger> </Style.Triggers> </Style> </Button.Style> </Button> </Grid> </Window> |
بسط نشانه گذاری x: Type در XAML دارای عملکردی مشابه مانند()typof در #C است. هنگامی که ویژگی ها مشخص می شوند ، نوع شیء مانند <“{Style TargetType = “{x:Type Button}> استفاده می شود ، استفاده می شود.
وقتی کد بالا کامپایل و اجرا شد ، MainWindow زیر را دریافت می کنید. هنگامی که ماوس بر روی دکمه است ، رنگ پیش زمینه دکمه را تغییر می دهد. وقتی ماوس را از روی دکمه را برمی داریم، دوباره به رنگ اصلی خود تغییر می کند.
خاصیت وابستگی در هنگام استفاده از آن در برنامه ، مزایایی را به شما می دهد. خاصیت وابستگی می تواند روی ویژگی CLR در سناریوهای زیر استفاده شود.
در اصل ، ویژگی های وابستگی عملکردهای زیادی را ارائه می دهد که شما با استفاده از یک ویژگی CLR به دست نمی آورید.
تفاوت اصلی بین خواص وابستگی و سایر خواص CLR در زیر ذکر شده است.
در چارچوب NET. نیز می توان خصوصیات وابستگی سفارشی را تعریف کرد. مراحل زیر را برای تعریف خواص وابستگی سفارشی در #C دنبال کنید.
کد #C زیر یک خاصیت وابستگی را برای تنظیم ویژگی SetText کنترل کاربر تعیین می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication3 { /// <summary> /// Interaction logic for UserControl1.xaml /// </summary> public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } public static readonly DependencyProperty SetTextProperty = DependencyProperty.Register("SetText", typeof(string), typeof(UserControl1), new PropertyMetadata("", new PropertyChangedCallback(OnSetTextChanged))); public string SetText { get { return (string)GetValue(SetTextProperty); } set { SetValue(SetTextProperty, value); } } private static void OnSetTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { UserControl1 UserControl1Control = d as UserControl1; UserControl1Control.OnSetTextChanged(e); } private void OnSetTextChanged(DependencyPropertyChangedEventArgs e) { tbTest.Text = e.NewValue.ToString(); } } } |
در این جا فایل XAML است که در آن TextBlock به عنوان یک کاربر کنترل شده تعریف شده است و خاصیت وابستگی SetText به آن متن اختصاص داده می شود.
کد XAML زیر یک کنترل کاربر ایجاد می کند و خاصیت وابستگی آن به SetText را آغاز می کند.
1 2 3 4 5 6 7 8 9 10 11 | <Window x:Class = "WpfApplication3.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns:views = "clr-namespace:WpfApplication3" Title = "MainWindow" Height = "350" Width = "604"> <Grid> <views:UserControl1 SetText = "Hellow World"/> </Grid> </Window> |
بیایید این برنامه را اجرا کنیم. بلافاصله می توانید مشاهده کنید که در MainWindow، خاصیت وابستگی برای کنترل کاربر با موفقیت به عنوان یک متن استفاده شده است.
بررسی خواص وابسته در WPF یا Dependency Properties را در این بخش از آموزش WPF دنبال نمودیم. در جلسه ی آینده مبحث routed event را بیان خواهیم نمود.