延迟获取文本框textchanged事件的文本 - Windows phone

时间:2015-07-25 09:43:29

标签: c# xaml windows-phone-7 windows-phone-8 viewmodel

我创建了一个TextBox。我在视图模型中写了一个TextChanged事件。问题是,当我在'a' TextBox事件中输入TextChanged时,我会得到""。然后,如果我输入下一个字母'b',我会收到上一个结果'a',如果我输入下一个字母'c',我的结果是'ab'。为什么TextChanged事件中有一个char延迟?

这是我的XAML代码:

<toolkit:PhoneTextBox Visibility="{Binding IsSearchBoxVisible,Converter={StaticResource BoolToVisibilityConverter}}" TextChanged="txtboxPhoneContacts_TextChanged" Grid.Row="2" Width="450" FontSize="28" Foreground="Black" x:Name="txtboxPhoneContacts" VerticalContentAlignment="Center" Background="LightGray" Hint="{Binding Localizedresources.SearchContactsText,Source={StaticResource LocalizedStrings}}" Text="{Binding PhoneContactSearchText,Mode=TwoWay,UpdateSourceTrigger=Explicit}" Style="{StaticResource SearchTextBoxStyle}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="TextChanged">
                <i:InvokeCommandAction Command="{Binding PhoneBookTextBoxTextChanged}" CommandParameter="{Binding Text,ElementName=txtboxPhoneContacts,BindsDirectlyToSource=True}"></i:InvokeCommandAction>
            </i:EventTrigger>
        </i:Interaction.Triggers>
        <i:Interaction.Behaviors>
            <controls:UpdateOnTextChangedBehavior></controls:UpdateOnTextChangedBehavior>
        </i:Interaction.Behaviors>
</toolkit:PhoneTextBox>

我的ViewModel.cs

private void OnPhoneBookTextBoxTextChanged(Object obj)
{
        if (obj != null)
        {
            String text = obj.ToString();

            searchResults = new ObservableCollection<PhoneBookEntity>(
                             from item in PhoneContactsList
                             where item.PhoneContactName.Contains(text)
                             select item);
        }
}

非常感谢任何建议。

0 个答案:

没有答案