创建消息提示控件
  - internal class Message : ContentControl
- {
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public int Time { get; set; }
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />[Bindable(true)]
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public MessageType MessageType { get { return (MessageType)GetValue(MessageTypeProperty); } set { SetValue(MessageTypeProperty, value); } }
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public static readonly DependencyProperty MessageTypeProperty = DependencyProperty.Register("MessageType", typeof(MessageType), typeof(Message), new PropertyMetadata(default(MessageType)));
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />internal Message()
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> Loaded += Message_Loaded;
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />}
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />private async void Message_Loaded(object sender, System.Windows.RoutedEventArgs e)
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> if (Parent is MessageHost host)
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> {
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />await Task.Delay(Time);
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />host.Items.Remove(this);
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> }
-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />}
- }
复制代码 消息提示控件  -
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
复制代码 消息提示控件容器样式创建消息通知类
  - public class MessageManage {
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />internal static Dictionary MessageHosts { get; set; } = MessageHosts ?? new Dictionary();
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public static void Default(string message, string token = null, int time = 3000)
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> Show(message, MessageType.Default, token, time);
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />}
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public static void Success(string message, string token = null, int time = 3000)
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> Show(message, MessageType.Success, token, time);
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />}
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public static void Warning(string message, string token = null, int time = 3000)
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> Show(message, MessageType.Warning, token, time);
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />}
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public static void Error(string message, string token = null, int time = 3000)
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> Show(message, MessageType.Error, token, time);
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />}
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />private static void Show(string message, MessageType messageType, string token, double time)
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> if (!MessageHosts.ContainsKey(token)) return;
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> var messageHost = MessageHosts[token];
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> messageHost.Dispatcher.BeginInvoke( (Action)(() =>
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> {
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />messageHost.Items.Add(new Message() { MessageType = messageType, Content = message, Time = time, Uid = Guid.NewGuid().ToString() });
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> }));
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />} }
复制代码 消息通知使用示例:
在app.xaml中引入资源-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
复制代码 MainWindow.xaml-
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />
复制代码- public partial class MainWindow : Window {
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />public MainWindow()
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> InitializeComponent();
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />}
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />private void Button_Click(object sender, RoutedEventArgs e)
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" />{
- <Style BasedOn="{StaticResource MessageHostStyle}" TargetType="xy:MessageHost" /> MessageManage.Success("点击了测试", "MainmessageToken");
- }
- }
复制代码 效果:

通俗点讲就是在想要拥有提示的页面添加一个容器,容器中塞入消息提示控件,消息提示控件在指定时间之后从容器中移除;
MessageManage类通过token进行查找到指定容器进行塞入;
也可以全局使用一个消息容器进行提示;根据需求进行改造。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |