[英]Validation error messages in a list (Listview)
我正在C#MVVM中創建一個簡單的應用程序,需要您的幫助(建議)。 我不知道這是可能的,但您可能會知道如何做。 因此,要驗證我的文本框,請使用IDataErrorInfo接口。 它很酷,但我有一個問題。 是否有可能將錯誤消息放在列表中以顯示在列表視圖中? 我想避免錯誤消息中出現“ \\ r \\ n”。 先感謝您 :)
下面是我的代碼:
Empoloyee.cs
public string this[string columnName]
{
get
{
int output;
error = string.Empty;
if (columnName == "DynamicSearchEmployeeName" && string.IsNullOrWhiteSpace(DynamicSearchEmployeeName))
{
error = "Employee Name is required to add a new Employee !";
}
if (columnName == "DynamicSearchEmployeeSalary" && SelectedEmployee == null)
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary))
{
error = "Employee Salary is required to add a new Employee !\r\n";
}
if (!Int32.TryParse(dynamicSearchEmployeeSalary, out output))
{
error += "Employee Salary has to be number !\r\nEmployee Salary cannot be less than 5 !\r\nEmployee Salary cannot be less than 10 !\r\nEmployee Salary cannot be less than 100 !";
}
if (Int32.TryParse(dynamicSearchEmployeeSalary, out output))
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || EmployeeSalary < 5)
{
error += "Employee Salary cannot be less than 5 !\r\n";
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || EmployeeSalary < 10)
{
error += "Employee Salary cannot be less than 10 !\r\n";
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || EmployeeSalary < 100)
{
error += "Employee Salary cannot be less than 100 !";
}
}
}
if (columnName == "DynamicSearchEmployeeSalary" && SelectedEmployee != null)
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary))
{
error = "Employee Salary is required to add a new Employee !\r\n";
}
if (!Int32.TryParse(DynamicSearchEmployeeSalary, out output))
{
error += "Employee Salary has to be number !\r\nEmployee Salary cannot be less than 5 !\r\nEmployee Salary cannot be less than 10 !\r\nEmployee Salary cannot be less than 100 !";
}
if (Int32.TryParse(DynamicSearchEmployeeSalary, out output))
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || Convert.ToInt32(DynamicSearchEmployeeSalary) < 5)
{
error += "Employee Salary cannot be less than 5 !\r\n";
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || Convert.ToInt32(DynamicSearchEmployeeSalary) < 10)
{
error += "Employee Salary cannot be less than 10 !\r\n";
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || Convert.ToInt32(DynamicSearchEmployeeSalary) < 100)
{
error += "Employee Salary cannot be less than 100 !";
}
}
}
if (columnName == "DynamicSearchEmployeeDesigner" && string.IsNullOrWhiteSpace(DynamicSearchEmployeeDesigner))
{
error = "Employee Designer is required to add a new Employee !";
}
return error;
}
}
MainWindow.xaml
<Window.Resources>
<ControlTemplate x:Key="ErrorToolTipTemplate_1">
<ControlTemplate.Resources>
<Style x:Key="textblockErrorTooltip" TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Margin" Value="0 0 0 0" />
</Style>
</ControlTemplate.Resources>
<DockPanel LastChildFill="true">
<Border Height="Auto"
Margin="0,0,0,0"
Background="#DC000C"
CornerRadius="0"
DockPanel.Dock="Bottom">
<TextBlock Style="{StaticResource textblockErrorTooltip}"
Text="{Binding ElementName=customAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" />
</Border>
<AdornedElementPlaceholder Name="customAdorner">
<Border BorderBrush="#DC000C" BorderThickness="1.3" />
</AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
<Style TargetType="TextBox">
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Width" Value="150" />
<Setter Property="Height" Value="30" />
<Setter Property="Validation.ErrorTemplate"
Value="{DynamicResource ErrorToolTipTemplate_1}" />
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
感謝Blacktempel的建議,我創建了以下解決方案。 我希望這很好。
public string Error
{
get { return error; }
}
public string this[string columnName]
{
get
{
int output;
List <string> validateErrorList = new List<string>();
error = string.Empty;
if (columnName == "DynamicSearchEmployeeName")
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeName))
{
validateErrorList.Add("Employee Name is required to add a new Employee !");
}
if ((!Regex.IsMatch(DynamicSearchEmployeeName, @"^[a-zA-Z]+$")))
{
validateErrorList.Add("Employee Name has to contain only a-z, A-Z letters!");
}
}
if (columnName == "DynamicSearchEmployeeSalary" && SelectedEmployee == null)
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary))
{
validateErrorList.Add("Employee Salary is required to add a new Employee !");
}
if (!Int32.TryParse(dynamicSearchEmployeeSalary, out output))
{
validateErrorList.Add("Employee Salary has to be number !");
validateErrorList.Add("Employee Salary cannot be less than 5 !");
validateErrorList.Add("Employee Salary cannot be less than 10 !");
validateErrorList.Add("Employee Salary cannot be less than 100 !");
}
if (Int32.TryParse(dynamicSearchEmployeeSalary, out output))
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || EmployeeSalary < 5)
{
validateErrorList.Add("Employee Salary cannot be less than 5 !");
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || EmployeeSalary < 10)
{
validateErrorList.Add("Employee Salary cannot be less than 10 !");
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || EmployeeSalary < 100)
{
validateErrorList.Add("Employee Salary cannot be less than 100 !");
}
}
}
if (columnName == "DynamicSearchEmployeeSalary" && SelectedEmployee != null)
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary))
{
validateErrorList.Add("Employee Salary is required to add a new Employee !");
}
if (!Int32.TryParse(DynamicSearchEmployeeSalary, out output))
{
validateErrorList.Add("Employee Salary has to be number !");
validateErrorList.Add("Employee Salary cannot be less than 5 !");
validateErrorList.Add("Employee Salary cannot be less than 10 !");
validateErrorList.Add("Employee Salary cannot be less than 100 !");
}
if (Int32.TryParse(DynamicSearchEmployeeSalary, out output))
{
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || Convert.ToInt32(DynamicSearchEmployeeSalary) < 5)
{
validateErrorList.Add("Employee Salary cannot be less than 5 !");
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || Convert.ToInt32(DynamicSearchEmployeeSalary) < 10)
{
validateErrorList.Add("Employee Salary cannot be less than 10 !");
}
if (string.IsNullOrWhiteSpace(DynamicSearchEmployeeSalary) || Convert.ToInt32(DynamicSearchEmployeeSalary) < 100)
{
validateErrorList.Add("Employee Salary cannot be less than 100 !");
}
}
}
if (columnName == "DynamicSearchEmployeeDesigner" && string.IsNullOrWhiteSpace(DynamicSearchEmployeeDesigner))
{
validateErrorList.Add("Employee Designer is required to add a new Employee !");
}
foreach (var validateerroritem in validateErrorList)
{
error += validateerroritem+"\r\n";
}
error = error.ToString().TrimEnd('\r', '\n');
if(error == string.Empty)
{
IsValidated = true;
}
else if (error != string.Empty)
{
IsValidated = false;
}
return error;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.