/// <summary> /// Add module menu into page /// </summary> /// <param name="container">COntainer</param> public virtual void AddModuleMenu(Panel container) { if (container == null) { throw new ArgumentNullException("Parameter container is null."); } var pageHeader = container.Children.FirstOrDefault(x => (x as FrameworkElement).Name == "PageHeader"); DropShadowPanel ShadowPanel = new DropShadowPanel { Style = ApplicationBase.Current.Resources["ShadowContent"] as Style, HorizontalContentAlignment = HorizontalAlignment.Stretch, VerticalContentAlignment = VerticalAlignment.Stretch }; RelativePanel.SetBelow(ShadowPanel, pageHeader); RelativePanel.SetAlignBottomWithPanel(ShadowPanel, true); RelativePanel.SetAlignRightWithPanel(ShadowPanel, true); RelativePanel.SetAlignLeftWithPanel(ShadowPanel, true); Grid ContentGrid = new Grid { Style = ApplicationBase.Current.Resources["ContentGrid"] as Style }; RowDefinition RowMain = new RowDefinition(); RowDefinition MinorUpdateRow = new RowDefinition(); ValueWhenConverter boolToGridLength = new ValueWhenConverter { When = true, Value = new GridLength(50), Otherwise = new GridLength(0) }; Binding minorUpdateRowBinding = new Binding { Source = (DataContext as MainPageVMBase).ShowMinorUpdate, Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = boolToGridLength }; BindingOperations.SetBinding(MinorUpdateRow, RowDefinition.HeightProperty, minorUpdateRowBinding); var MPVMB = DataContext as MainPageVMBase; ApplicationBase.Current.PropertyChangedNotifier.RegisterProperty(MinorUpdateRow, RowDefinition.HeightProperty, nameof(MPVMB.ShowMinorUpdate), viewModelType, converter: boolToGridLength); ContentGrid.RowDefinitions.Add(RowMain); ContentGrid.RowDefinitions.Add(MinorUpdateRow); AddMenuList(ContentGrid); AddMinorUpdateRow(ContentGrid); ShadowPanel.Content = ContentGrid; container.Children.Add(ShadowPanel); }
/// <summary> /// Add command bar into page /// </summary> /// <param name="container">Container</param> protected virtual void AddCommandBar(Panel container) { CommandBar PageHeader = new CommandBar { Name = nameof(PageHeader), Style = ApplicationBase.Current.Resources["PageHeader"] as Style, Margin = new Thickness(0, 32, 0, 0) }; AppBarButton AddItem = new AppBarButton() { Label = "Add " + (DataContext as ViewModelBase).GetPropertyValue("ModuleName") as string, Icon = new SymbolIcon(Symbol.Add), IsEnabled = true, Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Command = (DataContext as ViewModelBase).GetPropertyValue("AddItemCommand") as ICommand }; ToolTipService.SetToolTip(AddItem, "Add new " + (DataContext as ViewModelBase).GetPropertyValue("ModuleName") as string + " (Ctrl + N)"); KeyboardAccelerator addItemKeyboardAccelerator = new KeyboardAccelerator() { Modifiers = VirtualKeyModifiers.Control, Key = VirtualKey.N }; AddItem.KeyboardAccelerators.Add(addItemKeyboardAccelerator); AppBarButton SlavePane = new AppBarButton() { Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Command = (DataContext as ViewModelBase).GetPropertyValue("ChangePaneVisibilityCommand") as ICommand }; ToolTipService.SetToolTip(SlavePane, "Open/Close slave pane (Ctrl + O)"); KeyboardAccelerator openSlavePaneKeyboardAccelerator = new KeyboardAccelerator() { Modifiers = VirtualKeyModifiers.Control, Key = VirtualKey.O }; SlavePane.KeyboardAccelerators.Add(openSlavePaneKeyboardAccelerator); Binding slavePaneLabelBinding = new Binding() { Path = new PropertyPath(nameof(ColumnDefinition.Width)), ElementName = nameof(slaveFrameCD), Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new SlavePaneVisibilityConverter(), ConverterParameter = "text" }; BindingOperations.SetBinding(SlavePane, AppBarButton.LabelProperty, slavePaneLabelBinding); Binding slavePaneIconBinding = new Binding() { Path = new PropertyPath(nameof(ColumnDefinition.Width)), ElementName = nameof(slaveFrameCD), Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new SlavePaneVisibilityConverter(), ConverterParameter = "icon" }; BindingOperations.SetBinding(SlavePane, AppBarButton.IconProperty, slavePaneIconBinding); Binding slavePaneIsEnabledBinding = new Binding() { Source = ((DataContext as ViewModelBase).GetPropertyValue("PivotPanes") as IList).Count, Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new IntToBoolConverter() }; BindingOperations.SetBinding(SlavePane, AppBarButton.IsEnabledProperty, slavePaneIsEnabledBinding); ApplicationBase.Current.PropertyChangedNotifier.RegisterProperty(SlavePane, AppBarButton.IsEnabledProperty, "PivotPanes", viewModelType, "Count", converter: new IntToBoolConverter()); AppBarButton SelectItems = new AppBarButton() { Name = nameof(SelectItems), Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Icon = new SymbolIcon(Symbol.Bullets), Command = (DataContext as ViewModelBase).GetPropertyValue("ChangeSelectionModeCommand") as ICommand }; Binding selectItemsLabelBinding = new Binding() { Path = new PropertyPath(nameof(ListView.SelectionMode)), ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new LabelConverter() }; BindingOperations.SetBinding(SelectItems, AppBarButton.LabelProperty, selectItemsLabelBinding); ValueWhenConverter SlidableItemIsEnabled = new ValueWhenConverter { When = ListViewSelectionMode.Multiple, Value = false, Otherwise = true }; Binding selectItemsIsEnabledBinding = new Binding() { Path = new PropertyPath(nameof(ListView.SelectionMode)), ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = SlidableItemIsEnabled }; BindingOperations.SetBinding(SelectItems, AppBarButton.IsEnabledProperty, selectItemsIsEnabledBinding); //ToolTipService.SetToolTip(SlavePane, "Open/Close slave pane (Ctrl + O)"); //KeyboardAccelerator selectItemsKeyboardAccelerator = new KeyboardAccelerator() //{ // Modifiers = VirtualKeyModifiers.Control, // Key = VirtualKey.X //}; //SlavePane.KeyboardAccelerators.Add(selectItemsKeyboardAccelerator); AppBarButton CancelSelectItems = new AppBarButton() { Name = nameof(CancelSelectItems), Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Icon = new SymbolIcon(Symbol.Cancel), Command = (DataContext as ViewModelBase).GetPropertyValue("ChangeSelectionModeCommand") as ICommand }; ToolTipService.SetToolTip(SlavePane, "Cancel select items (Esc)"); KeyboardAccelerator cancelSelectItemsKeyboardAccelerator = new KeyboardAccelerator() { Key = VirtualKey.Escape }; CancelSelectItems.KeyboardAccelerators.Add(cancelSelectItemsKeyboardAccelerator); Binding selectItemsVisibilityBinding = new Binding() { Path = new PropertyPath(nameof(AppBarButton.Visibility)), ElementName = nameof(CancelSelectItems), Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new InvertVisibilityConverter() }; BindingOperations.SetBinding(SelectItems, AppBarButton.VisibilityProperty, selectItemsVisibilityBinding); Binding cancelSelectItemsLabelBinding = new Binding() { Path = new PropertyPath(nameof(ListView.SelectionMode)), ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new LabelConverter() }; BindingOperations.SetBinding(CancelSelectItems, AppBarButton.LabelProperty, cancelSelectItemsLabelBinding); Binding cancelSelectItemsIsEnabledBinding = new Binding() { Path = new PropertyPath(nameof(AppBarButton.IsEnabled)), ElementName = nameof(SelectItems), Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new InvertBoolConverter() }; BindingOperations.SetBinding(CancelSelectItems, AppBarButton.IsEnabledProperty, cancelSelectItemsIsEnabledBinding); ValueWhenConverter SelectItemsMode = new ValueWhenConverter { When = ListViewSelectionMode.Multiple, Value = Visibility.Visible, Otherwise = Visibility.Collapsed }; Binding cancelSelectItemsVisibilityBinding = new Binding() { Path = new PropertyPath(nameof(ListView.SelectionMode)), ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = SelectItemsMode }; BindingOperations.SetBinding(CancelSelectItems, AppBarButton.VisibilityProperty, cancelSelectItemsVisibilityBinding); AppBarButton SelectAllItems = new AppBarButton() { Name = nameof(SelectAllItems), Label = "Select all", Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Icon = new SymbolIcon(Symbol.SelectAll), Command = null }; ToolTipService.SetToolTip(SelectAllItems, "Select all (Ctrl + A)"); KeyboardAccelerator selectAllItemsKeyboardAccelerator = new KeyboardAccelerator() { Key = VirtualKey.A, Modifiers = VirtualKeyModifiers.Control }; SelectAllItems.KeyboardAccelerators.Add(selectAllItemsKeyboardAccelerator); Binding selectAllItemsVisibilityBinding = new Binding() { Path = new PropertyPath(nameof(ListView.SelectionMode)), ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = SelectItemsMode }; BindingOperations.SetBinding(SelectAllItems, AppBarButton.VisibilityProperty, selectAllItemsVisibilityBinding); AppBarButton ShareItems = new AppBarButton() { Name = nameof(ShareItems), Label = "Share", Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Icon = new SymbolIcon(Symbol.Share), Command = (DataContext as ViewModelBase).GetPropertyValue("ShareItemsCommand") as ICommand }; ToolTipService.SetToolTip(ShareItems, "Share"); Binding shareItemsCommandParameterBinding = new Binding() { ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }; BindingOperations.SetBinding(ShareItems, AppBarButton.CommandParameterProperty, shareItemsCommandParameterBinding); Binding shareItemsVisibilityBinding = new Binding() { Path = new PropertyPath(nameof(ListView.SelectionMode)), ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = SelectItemsMode }; BindingOperations.SetBinding(ShareItems, AppBarButton.VisibilityProperty, shareItemsVisibilityBinding); AppBarButton RemoveItems = new AppBarButton() { Name = nameof(RemoveItems), Label = "Remove items", Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Icon = new SymbolIcon(Symbol.Delete), Command = (DataContext as ViewModelBase).GetPropertyValue("RemoveItemsCommand") as ICommand }; ToolTipService.SetToolTip(RemoveItems, "Remove (Delete)"); KeyboardAccelerator removeItemsKeyboardAccelerator = new KeyboardAccelerator() { Key = VirtualKey.Delete, Modifiers = VirtualKeyModifiers.None }; RemoveItems.KeyboardAccelerators.Add(removeItemsKeyboardAccelerator); Binding removeItemsCommandParameterBinding = new Binding() { ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }; BindingOperations.SetBinding(RemoveItems, AppBarButton.CommandParameterProperty, removeItemsCommandParameterBinding); Binding removeItemsVisibilityBinding = new Binding() { Path = new PropertyPath(nameof(ListView.SelectionMode)), ElementName = "ModuleData", Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = SelectItemsMode }; BindingOperations.SetBinding(RemoveItems, AppBarButton.VisibilityProperty, removeItemsVisibilityBinding); AppBarButton CreateSecondTile = new AppBarButton() { Name = nameof(SelectAllItems), Label = "Select all", Template = ApplicationBase.Current.Resources["ShadowAppBarButton"] as ControlTemplate, Style = ApplicationBase.Current.Resources["AppBarButtonRevealLabelsOnRightStyle"] as Style, Icon = new SymbolIcon(Symbol.SelectAll), Command = (DataContext as ViewModelBase).GetPropertyValue("AddStartTileCommand") as ICommand }; ToolTipService.SetToolTip(CreateSecondTile, "Add/Remove second tile"); Binding createSecondTileLabelBinding = new Binding() { Source = (DataContext as ViewModelBase).GetPropertyValue("StartTileAdded"), Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new SecondaryTileExistConverter(), ConverterParameter = "text" }; BindingOperations.SetBinding(CreateSecondTile, AppBarButton.LabelProperty, createSecondTileLabelBinding); ApplicationBase.Current.PropertyChangedNotifier.RegisterProperty(CreateSecondTile, AppBarButton.LabelProperty, "StartTileAdded", viewModelType, converter: new SecondaryTileExistConverter(), converterParameter: "text"); Binding createSecondTileIconBinding = new Binding() { Source = (DataContext as ViewModelBase).GetPropertyValue("StartTileAdded"), Mode = BindingMode.OneWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Converter = new SecondaryTileExistConverter(), ConverterParameter = "icon" }; BindingOperations.SetBinding(CreateSecondTile, AppBarButton.IconProperty, createSecondTileIconBinding); ApplicationBase.Current.PropertyChangedNotifier.RegisterProperty(CreateSecondTile, AppBarButton.IconProperty, "StartTileAdded", viewModelType, converter: new SecondaryTileExistConverter(), converterParameter: "icon"); TextBlock title = new TextBlock { Text = (DataContext as ViewModelBase).GetPropertyValue("ModuleTitle") as string, Style = ApplicationBase.Current.Resources["PageHeaderText"] as Style }; PageHeader.PrimaryCommands.Add(AddItem); PageHeader.PrimaryCommands.Add(SlavePane); PageHeader.PrimaryCommands.Add(new AppBarSeparator()); PageHeader.PrimaryCommands.Add(SelectItems); PageHeader.PrimaryCommands.Add(CancelSelectItems); PageHeader.PrimaryCommands.Add(SelectAllItems); PageHeader.PrimaryCommands.Add(ShareItems); PageHeader.PrimaryCommands.Add(RemoveItems); PageHeader.PrimaryCommands.Add(new AppBarSeparator()); PageHeader.PrimaryCommands.Add(CreateSecondTile); PageHeader.Content = title; container.Children.Add(PageHeader); }