依存属性

11316 ワード

[一籠飯特稀オリジナル、転載は出典http://www.cnblogs.com/wanghafan/archive/2012/05/10/2493808.htmlを明記してください]
SLとWPFで依存属性を定義して属性を設定する
システムでIsTreeをtrueに設定するには、ツリーリストを表示します.そうしないと、ドロップダウンリスト機能が表示されます.
App.xaml.csコード:


View Code
1  private void Application_Startup(object sender, StartupEventArgs e)

2         {

3             //this.RootVisual = new MainPage();

4             Strongsoft.Module.Contact.ContactTree uc = new Strongsoft.Module.Contact.ContactTree();

5             uc.IsTree = false;

6             uc.ContactSelect += (ss, ee) => { MessageBox.Show(ee.ContactID + "|" + ee.ProfileID); };

7             this.RootVisual = uc; 

8         }

ContactTree.xaml.csコード:


View Code
 1 #region      

 2         public static readonly DependencyProperty IsTreeProperty =

 3             DependencyProperty.Register("IsTree", typeof(bool), 

 4 //IsTree         ,bool   

 5             typeof(ContactTree), new PropertyMetadata(IsTreeChangedCallback));

 6 //ContactTree            ,IsTreeChangedCallback     

 7         public bool IsTree

 8         {

 9             get { return (bool)GetValue(IsTreeProperty); }

10             set { SetValue(IsTreeProperty, value); }

11         }

12         private static readonly object synIsTreeChangedCallback = new object(); 

13 //

14         private static void IsTreeChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)

15         {

16             lock (synIsTreeChangedCallback) //        

17             {

18                 if (sender != null && sender is ContactTree)

19                 {

20                     ContactTree owner = sender as ContactTree;

21                     bool tree;

22                     try

23                     {

24                         tree = (bool)e.NewValue;

25                     }

26                     catch

27                     {

28                         tree = true;

29                     }

30                     switch (tree)

31                     {

32                         case true:

33                             owner.isTreeTrue();

34                             break;

35                         case false:

36                             owner.isTreeFalse();

37                             break;

38                     }

39                 }

40             }

41         }      

42         private void isTreeTrue()

43         {

44             tvLeftOrgan.Visibility = Visibility.Visible;

45             cbContent.Visibility = Visibility.Collapsed;

46             btnShowHid.Visibility = Visibility.Collapsed;

47             tvLeftOrgan.Margin = new Thickness(0, 0, 0, 0);

48         }

49         private void isTreeFalse()

50         {

51             tvLeftOrgan.Visibility = Visibility.Collapsed;

52             cbContent.Visibility = Visibility.Visible;

53             btnShowHid.Visibility = Visibility.Visible;

54             tvLeftOrgan.Margin = new Thickness(0, 21, 0, 0);

55         }  

56 #endregion