【问题标题】:windows phone 7 ListBox event confusionwindows phone 7 ListBox 事件混淆
【发布时间】:2011-12-16 05:01:57
【问题描述】:
该应用程序就像一本小字典。我有一个列表框和一个文本框。列表框已经填充了单词,当文本框中有任何条目时,列表框会再次填充以文本框中字母开头的单词。当用户单击一个单词时,我实现了一个列表框 SelectionChanged 事件,它的含义出现了。问题是当用户从列表中选择一个单词然后在文本框中键入一些内容时,调用 listBox SelectionChanged 事件我不希望这种情况发生,因为此时我的列表框的选定项目是空的。我想要一个事件仅当用户从列表框中选择某些内容时才会触发。当列表框的内容发生变化时,不应触发它。谢谢
【问题讨论】:
标签:
windows-phone-7
listbox
【解决方案1】:
您可以使用
1.if (lstWords.SelectedItem != null)
2.lstWords.SelectedIndex = -1;
例如以下是文本更改事件和列表选择更改事件的源代码
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (textBox1.Text.ToString().Equals(""))
{
XmlDictionaryRepository test = new XmlDictionaryRepository();
lstWords.ItemsSource = test.GetWordList(categorySelected,xmlFileName);
}
else
{
XmlDictionaryRepository test = new XmlDictionaryRepository();
lstWords.ItemsSource = test.GetMatchWordList(categorySelected, textBox1.Text.ToString(),xmlFileName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), (((PhoneApplicationFrame)Application.Current.RootVisual).Content).ToString(), MessageBoxButton.OK);
}
}
private void lstWords_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (lstWords.SelectedItem != null)
{
string wordSelected = ((Glossy_Test.Dictionary)(lstWords.SelectedItem)).Word;
if (lstWords.SelectedItem != null)
{
NavigationService.Navigate(new Uri(string.Format("/DescribeWord.xaml?param1={0}¶m2={1}", wordSelected, categorySelected), UriKind.Relative));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), (((PhoneApplicationFrame)Application.Current.RootVisual).Content).ToString(), MessageBoxButton.OK);
}
finally
{
// lstWords.SelectedIndex = -1;
}
}