Кто-нибудь успешно применил интерфейс INotifyDataErrorInfo и привязан к AutoCompleteBox. Я пробовал это, но я не получил ответа. Элемент управления не отвечает, как другие элементы управления, т. Е. С красной рамкой и всплывающей подсказкой. Он также не отображает отображение сводной информации с его ошибкой.AutoCompleteBox и INotifyDataErrorInfo в Silverlight
Я успешно создал стандартные TextBoxes и DatePickers, и они ведут себя отлично в соответствии со многими примерами, любезно предоставленными людьми в Интернете.
было бы хорошо, если бы был ответ на этот вопрос для согласованности моего экрана, также потому, что я хотел бы просто привязать свойство HasErrors, которое поставляется с INotifyDataErrorInfo, чтобы включить кнопку, когда она готова к сохранению, и я могу " t сделать это без дополнительного кода, чтобы проверить правильность этих полей.
В настоящее время я отношусь к ним по-другому, используя привязку MVVMLight EventToCommand и регистрацию события LostFocus.
<sdk:AutoCompleteBox x:Name="TransferTypeTextBox" SelectedItem="{Binding Path=SelectedTransferType, Mode=TwoWay, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True}" ItemsSource="{Binding Path=TransferTypes}" IsTextCompletionEnabled="True" Grid.Row="1" Grid.Column="1" Margin="0,3" Width="238" HorizontalAlignment="Left" FontFamily="/PtrInput_Silverlight;component/Fonts/Fonts.zip#Calibri" FontSize="13.333">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<cmd:EventToCommand Command="{Binding TransferTypeLostFocusCommand}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</sdk:AutoCompleteBox>
В ViewModel я тогда бросил RoutedEventArgs.OriginalSource к TextBox и получите текст, как это так, препятствуя пользователю покинуть поле если он не является пустым или соответствующий элемент в списке бокса: -
private void OnTransferTypeLostFocus(RoutedEventArgs e)
{
System.Windows.Controls.TextBox box = (System.Windows.Controls.TextBox)e.OriginalSource;
// If user inputs text but doesn't select one item, show message.
if (this.Ptr.TransferType == null && !string.IsNullOrEmpty(box.Text))
{
MessageBox.Show("That is not a valid entry for Transfer Type", "Transfer type", MessageBoxButton.OK);
box.Focus();
}
}
Спасибо, я попробую. Если вы не возражаете, я бы хотел спросить, можете ли вы выполнить очистку автозаполнения с помощью ViewModel. У меня есть привязка к SelectedItem и Text, но хотя я могу их очистить в ViewModel (т. Е. Null и String.Empty), исходное свойство SearchText для автозаполнения остается и сбрасывает текст на пользовательский ввод (т. Е. Не текст окончательный выбор, но изначально введенные символы, которые вызвали раскрывающийся список). У меня этот вопрос размещен на многих форумах, так как я не могу его отсортировать. – EzaBlade
Попробуйте вызвать OnPropertyChanged внутри свойства и установить Binding as TwoWay. Мой пример реализует эти условия, поэтому он должен решить вашу проблему. Если это не так, вы можете задать новый вопрос с подробным описанием проблемы. – vorrtex
Я решил свою проблему (вызванную мной). – EzaBlade