2014-04-18 1 views
1

Я застрял в странной проблеме. У меня есть AutoCompleteBox на мой взглядAutoCompleteBox.Text свойство ведет себя странно

<sdk:AutoCompleteBox x:Name="txtSIA" 
Grid.ColumnSpan="1" Grid.Row="1" Grid.Column="1" 
SelectedItem="{Binding SIA, Mode=TwoWay, ValidatesOnNotifyDataErrors=True}" 
Text="{Binding TextSIA, Mode=TwoWay}" 
KeyUp="TxtSIA_KeyUp" 
Populating="SIANonSIU_Populating" 
Style="{StaticResource AutoCompleteStyle}" 
/> 

Я реализовал поле валидатор, что проверить, если его текст не является нулевым или пустая строка. Она работает довольно хорошо, но сложная часть в том, что у меня есть кнопка, Reset все мои элементы управления значения, какой код из моего ViewModel является:

void BtnReset_OnClick(RoutedEventArgs e) 
{ 
    SIA = new SIA(); 
    TextSIA = string.Empty; 
    BtnGeneralIsEnabled = false; 
    DataGridSource = null; 
} 

Всякий раз, когда я нажимаю, а затем написать в моем AutoCompleteBox, то AutoCompleteBox является никогда не пустая или нулевая, даже в моем коде, в прослушивателе событий.

Вот некоторые картины, чтобы проиллюстрировать мою точку зрения:

Text = ab

Text = a

Text supposed to be = ""

ответ

0

Я нашел ответ here

Чтобы исправить это, но мы должны создать новый autocompletebox и переопределить метод OnApplyTemplate.

public class CustomAutoComplete : AutoCompleteBox 
{ 
TextBox mytext; 

public override void OnApplyTemplate() 
{ 
    base.OnApplyTemplate(); 
    mytext = GetTemplateChild("Text") as TextBox; 
    mytext.TextChanged += new System.Windows.Controls.TextChangedEventHandler(mytext_TextChanged); 
} 

void mytext_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) 
{ 
    this.Text = mytext.Text; 
    OnTextChanged(new RoutedEventArgs()); 
} 

}

0

Регистрация на событие TextChanged в AutoCompleteBox вместо KeyUp:

" Происходит, когда текст в текстовом поле AutoC ompleteBox меняется. "

+0

Спасибо за совет, но мне кажется, что это не исправить эту проблему .. –

+0

Попробуйте заливкой TextBox через e.Source вместо отправителя. Свойство TextSIA реализует INotifyPropertyChanged? –

+0

Все еще не исправляет. Настоящая сделка заключается в том, что она работает нормально, кроме как после нажатия кнопки сброса. –

 Смежные вопросы

  • Нет связанных вопросов^_^