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.Markup; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace Tango.Touch.Controls { [ContentProperty(nameof(Content))] public class TouchSideMenu : Control { public FrameworkElement Content { get { return (FrameworkElement)GetValue(ContentProperty); } set { SetValue(ContentProperty, value); } } public static readonly DependencyProperty ContentProperty = DependencyProperty.Register("Content", typeof(FrameworkElement), typeof(TouchSideMenu), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender,(d,e) => (d as TouchSideMenu).OnContentChanged())); public FrameworkElement MenuContent { get { return (FrameworkElement)GetValue(MenuContentProperty); } set { SetValue(MenuContentProperty, value); } } public static readonly DependencyProperty MenuContentProperty = DependencyProperty.Register("MenuContent", typeof(FrameworkElement), typeof(TouchSideMenu), new PropertyMetadata(null,(d,e) => (d as TouchSideMenu).OnMenuContentChanged())); public bool IsOpened { get { return (bool)GetValue(IsOpenedProperty); } set { SetValue(IsOpenedProperty, value); } } public static readonly DependencyProperty IsOpenedProperty = DependencyProperty.Register("IsOpened", typeof(bool), typeof(TouchSideMenu), new PropertyMetadata(false,OnIsOpenedChanged)); private static void OnIsOpenedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { } static TouchSideMenu() { DefaultStyleKeyProperty.OverrideMetadata(typeof(TouchSideMenu), new FrameworkPropertyMetadata(typeof(TouchSideMenu))); } private void OnContentChanged() { RemoveLogicalChild(Content); AddLogicalChild(Content); } private void OnMenuContentChanged() { RemoveLogicalChild(MenuContent); AddLogicalChild(MenuContent); } } }