我有一个用户填写的XAML输入表单。
我想验证此表单。
我在集合中有字段信息,我想循环并检查每个字段。
但是如何在字符串中访问字段的名称,例如。当fieldInformation.FieldName =“CompanyName”时,我想检查“Field_CompanyName.Text”。
伪代码:
foreach (var fieldInformation in _fieldInformations)
{
if (Field_{&fieldInformation.FieldName}.Text.Length > 2)
{
ErrorMessage.Text = String.Format("The length of {0} is too long, please correct.", fieldInformation.FieldName);
entryIsValid = false;
}
}
XAML:
<StackPanel Orientation="Horizontal" Margin="10 10 10 0">
<TextBlock Width="150" Text="Customer ID:"/>
<TextBox x:Name="Field_CustomerID" Width="150" MaxLength="5" Text=""/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="10 10 10 0">
<TextBlock Width="150" Text="Company Name:"/>
<TextBox x:Name="Field_CompanyName" Width="150" MaxLength="40" Text=""/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="10 10 10 0">
<TextBlock Width="150" Text="Contact Name:"/>
<TextBox x:Name="Field_ContactName" Width="150" MaxLength="30" Text=""/>
</StackPanel>
代码隐藏:
_fieldInformations.Add(new FieldInformation { FieldName = "CustomerID", FieldSize = 5 });
_fieldInformations.Add(new FieldInformation { FieldName = "CompanyName", FieldSize = 40 });
_fieldInformations.Add(new FieldInformation { FieldName = "ContactName", FieldSize = 30 });
答案 0 :(得分:43)
这不仅仅是代码隐藏文件中的FindName调用,还是我错过了什么?
TextBox fieldTB = (TextBox)this.FindName("Field_CompanyName");
答案 1 :(得分:6)
此外,如果您愿意从代码中添加UI元素,则必须使用RegisterName("Field_CompanyName", some_instance)
方法调用,因为FindName
默认仅适用于在XAML中声明的元素。