kkc0923

TreeMenuItem.xaml.cs

Sep 10th, 2014
310
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public delegate void ExpandButtonClick(TreeMenuItem item);
  2.  
  3.     public sealed partial class TreeMenuItem : UserControl
  4.     {
  5.         public ExpandButtonClick ButtonClick;
  6.  
  7.         #region IsExpandButtonEnabled Property
  8.         public bool IsExpandButtonEnabled
  9.         {
  10.             get { return (bool)GetValue(IsExpandButtonEnabledProperty); }
  11.             set { SetValue(IsExpandButtonEnabledProperty, value); }
  12.         }
  13.  
  14.         public static readonly DependencyProperty IsExpandButtonEnabledProperty =
  15.             DependencyProperty.Register("IsExpandButtonEnabled", typeof(bool), typeof(TreeMenuItem),
  16.             new PropertyMetadata(true, OnIsExpandButtonEnabledPropertyChanged));
  17.  
  18.         private static void OnIsExpandButtonEnabledPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  19.         {
  20.             bool value = (bool)e.NewValue;
  21.             TreeMenuItem menu = d as TreeMenuItem;
  22.  
  23.             if (value == true)
  24.             {
  25.                 menu.expandButton.Visibility = Visibility.Visible;
  26.             }
  27.             else
  28.             {
  29.                 menu.expandButton.Visibility = Visibility.Collapsed;
  30.             }
  31.         }
  32.         #endregion
  33.  
  34.         #region IsExpanded Property
  35.         public bool IsExpanded
  36.         {
  37.             get { return (bool)GetValue(IsExpandedProperty); }
  38.             set { SetValue(IsExpandedProperty, value); }
  39.         }
  40.  
  41.         public static readonly DependencyProperty IsExpandedProperty =
  42.             DependencyProperty.Register("IsExpanded", typeof(bool), typeof(TreeMenuItem),
  43.             new PropertyMetadata(false, OnIsExpandedPropertyChanged));
  44.  
  45.         private static void OnIsExpandedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  46.         {
  47.             bool value = (bool)e.NewValue;
  48.             TreeMenuItem menu = d as TreeMenuItem;
  49.  
  50.             if (value == true)
  51.             {
  52.                 menu.expandButtonFontIcon.Glyph = "\uE09C";
  53.             }
  54.             else
  55.             {
  56.                 menu.expandButtonFontIcon.Glyph = "\uE09D";
  57.             }
  58.         }
  59.         #endregion
  60.  
  61.         #region IsIconEnabled Property
  62.         public bool IsIconEnabled
  63.         {
  64.             get { return (bool)GetValue(IsIconEnabledProperty); }
  65.             set { SetValue(IsIconEnabledProperty, value); }
  66.         }
  67.  
  68.         public static readonly DependencyProperty IsIconEnabledProperty =
  69.             DependencyProperty.Register("IsIconEnabled", typeof(bool), typeof(TreeMenuItem),
  70.             new PropertyMetadata(true, OnIsIconEnabledPropertyChanged));
  71.  
  72.         private static void OnIsIconEnabledPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  73.         {
  74.             bool value = (bool)e.NewValue;
  75.             TreeMenuItem menu = d as TreeMenuItem;
  76.  
  77.             if (value == true)
  78.             {
  79.                 menu.menuIconFontIcon.Visibility = Visibility.Visible;
  80.             }
  81.             else
  82.             {
  83.                 menu.menuIconFontIcon.Visibility = Visibility.Collapsed;
  84.             }
  85.         }
  86.         #endregion
  87.  
  88.         #region IsSelected Property
  89.         public bool IsSelected
  90.         {
  91.             get { return (bool)GetValue(IsSelectedProperty); }
  92.             set { SetValue(IsSelectedProperty, value); }
  93.         }
  94.  
  95.         public static readonly DependencyProperty IsSelectedProperty =
  96.             DependencyProperty.Register("IsSelected", typeof(bool), typeof(TreeMenuItem),
  97.             new PropertyMetadata(false, IsSelectedPropertyChanged));
  98.  
  99.         private static void IsSelectedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  100.         {
  101.             bool value = (bool)e.NewValue;
  102.             TreeMenuItem menu = d as TreeMenuItem;
  103.  
  104.             if (value == true)
  105.             {
  106.                 menu.menuPanel.Background = (SolidColorBrush)App.Current.Resources["ApplicationBackgroundBrush"];
  107.             }
  108.             else
  109.             {
  110.                 menu.menuPanel.Background = new SolidColorBrush(Windows.UI.Colors.Transparent);
  111.             }
  112.         }
  113.         #endregion
  114.  
  115.         #region Text Property
  116.         public string Text
  117.         {
  118.             get { return (string)GetValue(TextProperty); }
  119.             set { SetValue(TextProperty, value); }
  120.         }
  121.  
  122.         public static readonly DependencyProperty TextProperty =
  123.             DependencyProperty.Register("Text", typeof(string), typeof(TreeMenuItem),
  124.             new PropertyMetadata(string.Empty, OnTextPropertyChanged));
  125.  
  126.         private static void OnTextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  127.         {
  128.             (d as TreeMenuItem).textBlock.Text = e.NewValue.ToString();
  129.         }
  130.         #endregion
  131.  
  132.         #region MenuFontSize Property
  133.         public int MenuFontSize
  134.         {
  135.             get { return (int)GetValue(MenuFontSizeProperty); }
  136.             set { SetValue(MenuFontSizeProperty, value); }
  137.         }
  138.  
  139.         public static readonly DependencyProperty MenuFontSizeProperty =
  140.             DependencyProperty.Register("MenuFontSize", typeof(int), typeof(TreeMenuItem),
  141.             new PropertyMetadata(32, OnMenuFontSizePropertyChanged));
  142.  
  143.         private static void OnMenuFontSizePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  144.         {
  145.             TreeMenuItem menuItem =  d as TreeMenuItem;
  146.  
  147.             menuItem.textBlock.FontSize = (int)e.NewValue;
  148.             menuItem.menuIconFontIcon.FontSize = menuItem.textBlock.FontSize * 3 / 4;
  149.             menuItem.expandButtonFontIcon.FontSize = menuItem.textBlock.FontSize * 3 / 4;
  150.         }
  151.         #endregion
  152.  
  153.         #region Icon Property
  154.         public string IconGlyph
  155.         {
  156.             get { return (string)GetValue(IconGlyphProperty); }
  157.             set { SetValue(IconGlyphProperty, value); }
  158.         }
  159.  
  160.         public static readonly DependencyProperty IconGlyphProperty =
  161.             DependencyProperty.Register("IconGlyph", typeof(string), typeof(TreeMenuItem),
  162.             new PropertyMetadata("", OnIconGlyphPropertyChanged));
  163.  
  164.         private static void OnIconGlyphPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  165.         {
  166.             (d as TreeMenuItem).menuIconFontIcon.Glyph = (string)e.NewValue;
  167.         }
  168.         #endregion
  169.  
  170.         public string Id
  171.         {
  172.             get;
  173.             set;
  174.         }
  175.  
  176.         public string ParentId
  177.         {
  178.             get;
  179.             set;
  180.         }
  181.  
  182.         List<TreeMenuItem> subItems = new List<TreeMenuItem>();
  183.         public List<TreeMenuItem> SubItems
  184.         {
  185.             get { return this.subItems; }
  186.         }
  187.  
  188.         public TreeMenuItem()
  189.         {
  190.             this.InitializeComponent();
  191.         }
  192.  
  193.         private void customMenuItem_SizeChanged(object sender, SizeChangedEventArgs e)
  194.         {
  195.             TreeMenuItem menuItem = sender as TreeMenuItem;
  196.  
  197.             menuItem.expandButton.Height = e.NewSize.Height;
  198.         }
  199.  
  200.         private void expandButton_Click(object sender, RoutedEventArgs e)
  201.         {
  202.             if (ButtonClick != null)
  203.             {
  204.                 ButtonClick(this);
  205.             }
  206.         }
  207.  
  208.         public void HideButton()
  209.         {
  210.             this.expandButton.Visibility = Visibility.Collapsed;
  211.         }
  212.     }
RAW Paste Data