-
Notifications
You must be signed in to change notification settings - Fork 197
Expand file tree
/
Copy pathDetailToolbar.xaml.cs
More file actions
129 lines (113 loc) · 4.67 KB
/
Copy pathDetailToolbar.xaml.cs
File metadata and controls
129 lines (113 loc) · 4.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#region copyright
// ******************************************************************
// Copyright (c) Microsoft. All rights reserved.
// This code is licensed under the MIT License (MIT).
// THE CODE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.
// ******************************************************************
#endregion
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace Inventory.Controls
{
public sealed partial class DetailToolbar : UserControl
{
public event ToolbarButtonClickEventHandler ButtonClick;
public DetailToolbar()
{
InitializeComponent();
Loaded += OnLoaded;
Unloaded += OnUnloaded;
UpdateControl();
}
#region ToolbarMode
public DetailToolbarMode ToolbarMode
{
get { return (DetailToolbarMode)GetValue(ToolbarModeProperty); }
set { SetValue(ToolbarModeProperty, value); }
}
private static void ToolbarModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as DetailToolbar;
control.UpdateControl();
}
public static readonly DependencyProperty ToolbarModeProperty = DependencyProperty.Register("ToolbarMode", typeof(DetailToolbarMode), typeof(DetailToolbar), new PropertyMetadata(DetailToolbarMode.Default, ToolbarModeChanged));
#endregion
#region DefaultCommands*
public string DefaultCommands
{
get { return (string)GetValue(DefaultCommandsProperty); }
set { SetValue(DefaultCommandsProperty, value); }
}
private static void DefaultCommandsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var control = d as DetailToolbar;
control.UpdateControl();
}
public static readonly DependencyProperty DefaultCommandsProperty = DependencyProperty.Register(nameof(DefaultCommands), typeof(string), typeof(DetailToolbar), new PropertyMetadata("edit,delete", DefaultCommandsChanged));
#endregion
private void UpdateControl()
{
switch (ToolbarMode)
{
default:
case DetailToolbarMode.Default:
ShowCategory(DefaultCommands.Split(','));
break;
case DetailToolbarMode.BackEditDelete:
ShowCategory("back", "edit", "delete");
break;
case DetailToolbarMode.CancelSave:
ShowCategory("cancel", "save");
break;
}
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
ElementSet.Children<AppBarButton>(commandBar.PrimaryCommands).Click += OnButtonClick;
}
private void OnUnloaded(object sender, RoutedEventArgs e)
{
ElementSet.Children<AppBarButton>(commandBar.PrimaryCommands).Click -= OnButtonClick;
}
private void ShowCategory(params string[] categories)
{
ElementSet.Children<AppBarButton>(commandBar.PrimaryCommands)
.ForEach(v => v.Show(v.IsCategory(categories)));
}
private void OnButtonClick(object sender, RoutedEventArgs e)
{
if (e.OriginalSource is AppBarButton button)
{
switch (button.Name)
{
case "buttonBack":
RaiseButtonClick(ToolbarButton.Back);
break;
case "buttonEdit":
RaiseButtonClick(ToolbarButton.Edit);
break;
case "buttonDelete":
RaiseButtonClick(ToolbarButton.Delete);
break;
case "buttonCancel":
RaiseButtonClick(ToolbarButton.Cancel);
break;
case "buttonSave":
RaiseButtonClick(ToolbarButton.Save);
break;
}
}
}
private void RaiseButtonClick(ToolbarButton toolbarButton)
{
ButtonClick?.Invoke(this, new ToolbarButtonClickEventArgs(toolbarButton));
}
}
}