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