silverlight – TextBox.TextChanged事件在Windows Phone 7模拟器上触发两次

silverlight – TextBox.TextChanged事件在Windows Phone 7模拟器上触发两次,第1张

概述我有一个非常简单的测试应用程序只是为了玩Windows Phone 7.我刚刚添加了一个TextBox和TextBlock到标准UI模板。唯一的自定义代码如下: public partial class MainPage : PhoneApplicationPage{ public MainPage() { InitializeComponent(); } 我有一个非常简单的测试应用程序只是为了玩windows Phone 7.我刚刚添加了一个TextBox和TextBlock到标准UI模板。唯一的自定义代码如下:

public partial class MainPage : PhoneApplicationPage{    public MainPage()    {        InitializeComponent();    }    private int counter = 0;    private voID TextBoxChanged(object sender,TextChangedEventArgs e)    {        textBlock1.Text += "Text changed " + (counter++) + "\r\n";    }}

TextBox.TextChanged事件在XAML中连接到TextBoxChanged:

<TextBox Height="72" HorizontalAlignment="left" margin="6,37,0"         name="textBox1" Text="" VerticalAlignment="top"         WIDth="460" TextChanged="TextBoxChanged" />

然而,每次我在模拟器中运行时按下一个键(屏幕键盘或物理键盘,按下暂停启用后者),它会增加计数器两次,在TextBlock中显示两行。我试过的一切表明事件是真正发射两次,我不知道为什么。我已经验证它只订阅一次 – 如果我取消订阅MainPage构造函数,当文本更改时,根本不会发生任何事情(对于文本块)。

我试过在一个普通的Silverlight应用程序的等效代码,它没有发生那里。我没有物理手机来重现这一点。我没有找到任何记录这是一个已知的问题在windows Phone 7。

任何人都可以解释我做错了什么,或者我应该报告为一个错误?

编辑:为了减少这是由于具有两个文本控件的可能性,我已经尝试删除TextBlock完全,并将TextBoxChanged方法更改为增量计数器。然后我在模拟器中运行,键入10个字母,然后在柜台上放一个断点;线(只是为了摆脱任何可能性,打破调试器是导致问题) – 它显示计数器为20。

编辑:我现在asked in the Windows Phone 7 forum …我们会看到会发生什么。

解决方法 TextChanged事件在WP7中触发两次的原因是TextBox如何为Metro外观模板化的副作用。

如果在Blend中编辑TextBox模板,您将看到它包含禁用/只读状态的辅助TextBox。这导致,作为副作用,事件发射两次。

如果不需要这些状态,可以更改模板以删除额外的TextBox(和关联状态),或者修改模板以在禁用/只读状态下实现不同的外观,而不使用辅助TextBox。

这样,事件将只触发一次。

总结

以上是内存溢出为你收集整理的silverlight – TextBox.TextChanged事件在Windows Phone 7模拟器上触发两次全部内容,希望文章能够帮你解决silverlight – TextBox.TextChanged事件在Windows Phone 7模拟器上触发两次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1009071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存