Я пытаюсь создать зависимость проверки между двумя столбцами datagrid.Как создать зависимость проверки datagrid между столбцами
Первый столбец - это выпадающее поле. (DataGridTemplateColumn) Второй текстовый столбец. (DataGridTextColumn)
Я пытаюсь из события выпадающего окна в коде, чтобы заставить проверку столбца текстового столбца таблицы данных той же строки.
Благодарим за помощь.
<data:DataGridTemplateColumn Header="Type" >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Source={StaticResource TypeListContainer}, Path=TypeLists}" Loaded="TypeBoxLoaded" DropDownClosed="TypeBoxChanged">
</ComboBox>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTextColumn Header="Rule" Binding="{Binding RuleWrapper, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" x:Name="RuleCol" />
Вот свойство
public string RuleWrapper
{
get
{
return this.Rule;
}
set
{
//Required
if (value == null || value == string.Empty)
{
throw new ValidationException("Rule is required");
}
//Match regular expression if type is channel
Regex reg = new Regex(@"^(51[01]|50[0-9]|[0-4]?[0-9][0-9]?)\.(51[01]|50[0-9]|[0-4]?[0-9][0-9]?)\.(51[01]|50[0-9]|[0-4]?[0-9][0-9]?)\.(51[01]|50[0-9]|[0-4]?[0-9][0-9]?)$");
if (Type == "channel" && !reg.IsMatch(value))
throw new ValidationException("Channel not matching the right format");
//Match range if type is trunk
int intValue = -1;
//Match if is a number
if (int.TryParse(value, out intValue))
{
//Match if number is in the range
if (intValue < 0 || intValue > 134217727)
throw new ValidationException("Trunk value must be between 0 and 134317727");
}
else
throw new ValidationException("Trunk value must a an integer");
this.Rule = value;
}
}
Какова цель управления ComboBox? Должна ли быть подтверждена его выбранная ценность?В вашем примере вы можете принудительно выполнить проверку, вызывая 'RuleWrapper = RuleWrapper', но я не уверен, что это то, что вам нужно. – vorrtex
Выбор блока combox запускает другую проверку правилом. Поэтому, когда я делаю RuleWrapper = RuleWrapper, чтобы заставить проверку в коде позади, я получаю исключение ValidationException, но я не знаю, как его обрабатывать, поэтому он корректно отображается на datagrid. – Stainedart
Я знаю, как принудительно проверять, если я использую IDataErrorInfo или Интерфейсы INotifyDataErrorInfo. Как вы думаете, если я полностью переписал эту проверку, чтобы она выполнялась этими интерфейсами? Затем вам придется переписать весь код проверки. – vorrtex