-
Notifications
You must be signed in to change notification settings - Fork 0
/
EmojiTabControl.xaml.cs
119 lines (98 loc) · 3.63 KB
/
EmojiTabControl.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
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Doit.Chat.Emoji;
using Doit.Chat.Emoji.Emoji.Defaults;
using Doit.Chat.Emoji.Entity;
namespace Doit.Chat.Emoji {
/// <summary>
/// EmojiTabControl.xaml 的交互逻辑
/// </summary>
public partial class EmojiTabControl : UserControl, INotifyPropertyChanged {
//private static readonly EmojiTabControl instance = null;
//static EmojiTabControl() {
// instance = new EmojiTabControl();
//}
//public static EmojiTabControl Instance {
// get {
// return instance;
// }
//}
public EmojiTabControl() {
InitializeComponent();
//new Thread(p => {
InitDefaultsEmoji();
//}).Start();
this.DataContext = this;
}
private static ObservableCollection<EmojiPackage> emojiPackages = new ObservableCollection<EmojiPackage>();
/// <summary>
/// emoji集合
/// </summary>
public static ObservableCollection<EmojiPackage> EmojiPackages {
get {
return emojiPackages;
}
set {
emojiPackages = value;
}
}
#region INotifyPropertyChanged Members
//属性的监听事件
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName) {
if (string.IsNullOrEmpty(propertyName)) throw new ArgumentNullException("propertyName");
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
#region 事件处理
private void emojiTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) {
EmojiPackage selectedPackage =(EmojiPackage) emojiTabControl.SelectedItem;
OnPropertyChanged("EmojiPackages.EmojiItems");
}
#endregion
/// <summary>
/// 选择表情后的事件处理
/// </summary>
/// <param name="handler"></param>
public void SetEmojiHitEvent(RoutedEventHandler handler) {
this.emojiTabControl.AddHandler(EmojiControl.ImgHitEvent, handler);
}
#region 私有方法
public void InitDefaultsEmoji() {
this.Dispatcher.BeginInvoke(new Action(() => {
if (EmojiTabControl.EmojiPackages.Where(x => x.Title.Equals("默认表情")).Count() > 0)
return;
//EmojiPackage defaultEmojiPackage = new EmojiPackage();
//defaultEmojiPackage.AlbumCover = "pack://application:,,,/Emoji;Component/images/defaults/emoji_1f600.png";
//defaultEmojiPackage.Author = "system";
//defaultEmojiPackage.Title = "默认表情";
//defaultEmojiPackage.Items = new List<EmojiItem>();
DefaultsEmojis.Instance.SourceList.ForEach(q => {
EmojiTabControl.EmojiPackages.Add(q.ToEmojiPackage());
});
//People.Items.ForEach(item => {
// defaultEmojiPackage.Items.Add(item);
//});
//Nature.Items.ForEach(item => {
// defaultEmojiPackage.Items.Add(item);
//});
//Objects.Items.ForEach(item => {
// defaultEmojiPackage.Items.Add(item);
//});
//Places.Items.ForEach(item => {
// defaultEmojiPackage.Items.Add(item);
//});
//Symbols.Items.ForEach(item => {
// defaultEmojiPackage.Items.Add(item);
//});
//EmojiTabControl.EmojiPackages.Add(defaultEmojiPackage);
}), null);
}
#endregion
}
}