首页 > 解决方案 > 应该如何在 wpf 中修复表情符号

问题描述

我使用这个库https://www.nuget.org/packages/Emoji.Wpf在我的应用程序中使用表情符号。但我有一些问题。

<emoji:Picker x:Name="mypicker" FontSize="40" Cursor="None"  SelectionChanged="mypicker_SelectionChanged" Loaded="mypicker_Loaded"   /> 
<TextBox  x:Name="mytxt"  />

在 SelectionChanged 中:

var emoji = mypicker.Selection;
mytxt.Text = mytxt.Text + emoji ;

如果我点击一个表情符号它的工作,但如果我再次点击它不起作用。我应该如何解决这个问题?

标签: wpfemoji

解决方案


这是预期的行为,因为只有在选择更改SelectionChanged时才会触发事件。如果您选择两次相同的表情符号,则所选项目没有改变。

您使用的Picker控件有一个内部的Popup,但它不公开事件PopupClosed或类似的东西ItemSelected。由于所有字段和方法都是privateor internal,因此派生自定义类型不起作用,除了使用反射,我不推荐。

也不建议在事件处理程序中将该属性设置为,因为按钮Selected只会显示问号而不是表情符号 ( ),但如果这对您有用,您可以这样做。nullSelectionChangedPicker???

另一种方法是创建一个单独的按钮以在您的文本中插入表情符号,并Picker仅选择表情符号。


推荐阅读