-
Notifications
You must be signed in to change notification settings - Fork 59
/
MainWindow.xaml.cs
164 lines (150 loc) · 13.1 KB
/
MainWindow.xaml.cs
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging;
using MessageBox.Avalonia.DTO;
using MessageBox.Avalonia.Enums;
using MessageBox.Avalonia.Models;
using MessageBoxAvaloniaEnums = MessageBox.Avalonia.Enums;
namespace MessageBox.Avalonia.Example
{
public class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public async void MsBoxStandard_Click(object sender, RoutedEventArgs e)
{
/*var messageBoxStandardWindow = MessageBox.Avalonia.MessageBoxManager
.GetMessageBoxStandardWindow("title", " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.", MessageBoxAvaloniaEnums.ButtonEnum.Ok, MessageBoxAvaloniaEnums.Icon.Stopwatch)*/
int maxWidth = 500;
int maxHeight = 800;
// If you want to auto strict the max sizes
/*var screen = Screens?.ScreenFromVisual(this);
if (!(screen is null))
{
maxWidth = (int) (screen.WorkingArea.Width / screen.PixelDensity - 100);
maxHeight = (int) (screen.WorkingArea.Height / screen.PixelDensity - 50);
}*/
var messageBoxStandardWindow = MessageBox.Avalonia.MessageBoxManager.GetMessageBoxStandardWindow(
new MessageBoxStandardParams
{
ButtonDefinitions = ButtonEnum.YesNoCancel,
ContentTitle = "title",
ContentHeader =
"Testing long header for debug purpose, this should never be that long, still it may allow it! " +
"Testing long header for debug purpose, this should never be that long, still it may allow it!" +
"Testing long header for debug purpose, this should never be that long, still it may allow it!",
ContentMessage =
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n" +
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut pulvinar est, eget porttitor magna. Maecenas nunc elit, pretium nec mauris vel, cursus faucibus leo. Mauris consequat magna vel mi malesuada semper. Donec nunc justo, rhoncus vel viverra a, ultrices vel nibh. Praesent ut libero a nunc placerat vulputate. Morbi ullamcorper pharetra lectus, ut lobortis ex consequat sit amet. Vestibulum pellentesque quam at justo hendrerit, et tincidunt nisl mattis. Curabitur eu nibh enim.\n",
WindowStartupLocation = WindowStartupLocation.CenterOwner,
CanResize = false,
MaxWidth = maxWidth,
MaxHeight = maxHeight,
ShowInCenter = true,
Icon = MessageBoxAvaloniaEnums.Icon.Info,
Topmost = true
});
await messageBoxStandardWindow.ShowDialog(this);
}
public async void MsBoxCustom_Click(object sender, RoutedEventArgs e)
{
var messageBoxCustomWindow = MessageBox.Avalonia.MessageBoxManager
.GetMessageBoxCustomWindow(new MessageBoxCustomParams
{
Style = Style.UbuntuLinux,
Topmost = true,
ContentMessage = "支持FontFamily",
FontFamily = "Microsoft YaHei,Simsun",
Icon = MessageBoxAvaloniaEnums.Icon.Success,
ButtonDefinitions = new[]
{
new ButtonDefinition {Name = "My", IsCancel = true},
new ButtonDefinition {Name = "Buttons", Type = ButtonType.Colored, IsDefault = true}
},
WindowStartupLocation = WindowStartupLocation.CenterOwner
});
await messageBoxCustomWindow.ShowDialog(this);
}
public async void MsBoxHyperlink_Click(object sender, RoutedEventArgs e)
{
var messageBoxHyperlinkWindow = MessageBox.Avalonia.MessageBoxManager
.GetMessageBoxHyperlinkWindow(new MessageBoxHyperlinkParams()
{
CanResize = true,
Topmost = true,
Style = MessageBoxAvaloniaEnums.Style.MacOs,
HyperlinkContentProvider = new[]
{
new HyperlinkContent
{Alias = "dedede ", Url = "https://avaloniaui.net/docs/styles/styles"},
new HyperlinkContent {Alias = "edvyydebbvydebvyed "},
new HyperlinkContent {Url = "https://avaloniaui.net/docs/styles/styles"}
},
WindowStartupLocation = WindowStartupLocation.CenterOwner,
ButtonDefinitions = ButtonEnum.Ok,
});
await messageBoxHyperlinkWindow.ShowDialog(this);
}
public async void MsBoxInput_Click(object sender, RoutedEventArgs e)
{
var messageBoxInputWindow = MessageBox.Avalonia.MessageBoxManager
.GetMessageBoxInputWindow(new MessageBoxInputParams
{
Style = Style.MacOs,
Topmost = true,
ContentHeader = "Input your admin password below",
ContentMessage = "Password:",
IsPassword = true,
PasswordRevealMode = MessageBoxInputParams.PasswordRevealModes.Hold,
ButtonDefinitions = new[]
{
new ButtonDefinition {Name = "Cancel", IsCancel = true},
new ButtonDefinition {Name = "Confirm", Type = ButtonType.Colored, IsDefault = true}
},
WindowStartupLocation = WindowStartupLocation.CenterOwner,
Width = 500,
// The following code is required for multi line to ensure the best view experience:
//Multiline = true,
//Height = 500,
//SizeToContent = SizeToContent.Manual
});
await messageBoxInputWindow.ShowDialog(this);
}
private async void MsBoxCustomImage_Click(object sender, RoutedEventArgs e)
{
var messageBoxCustomWindow = MessageBox.Avalonia.MessageBoxManager
.GetMessageBoxCustomWindow(new MessageBoxCustomParamsWithImage
{
Style = Style.UbuntuLinux,
Topmost = true,
ContentMessage = "Message",
Icon = new Bitmap("./icon-rider.png"),
ButtonDefinitions = new[]
{
new ButtonDefinition {Name = "My", IsCancel = true},
new ButtonDefinition {Name = "Buttons", Type = ButtonType.Colored, IsDefault = true}
},
WindowStartupLocation = WindowStartupLocation.CenterOwner
});
await messageBoxCustomWindow.ShowDialog(this);
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
}
}