Вы можете использовать ValidationRules для этого, но я думаю, что это будет довольно сложно, так как вам нужно будет передать ему ContractNumberList, чтобы проверить правильность. Более простой способ - заставить ViewModel реализовать IDataErrorInfo
, установить ValidatesOnDataErrors="True"
для Text
Binding, а затем выполнить проверку действительности из вашей ViewModel. Это может выглядеть примерно так
<ComboBox ItemsSource="{Binding Path=ContractNumberList}"
Width="90"
IsEditable="True"
SelectedItem="{Binding Path=ContractNumber,
Mode=TwoWay}"
Text="{Binding Path=ContractNumber,
UpdateSourceTrigger=LostFocus,
ValidatesOnDataErrors=True}"/>
Просмотр модели
public class YourViewModel : IDataErrorInfo
{
// ...
public string ContractNumber
{
get;
set;
}
// etc.
#region IDataErrorInfo Members
public string Error
{
get { throw new NotImplementedException(); }
}
public string this[string columnName]
{
get
{
string returnValue = string.Empty;
if (columnName == "ContractNumber")
{
if (ContractNumberList.IndexOf(ContractNumber) < 0)
{
returnValue = "Invalid selection";
}
}
return returnValue;
}
}
#endregion
}