C# 如何在XAML中动态访问元素名?

C# 如何在XAML中动态访问元素名?,c#,wpf,xaml,C#,Wpf,Xaml,我有一个用户填写的XAML输入表单 我想验证这个表单 我有一个集合中的字段信息,我想循环并检查每个字段 但是,当字段位于字符串中时,如何访问该字段的名称,例如当fieldInformation.FieldName=“CompanyName”我想选中“field\u CompanyName.Text”。 伪代码: foreach (var fieldInformation in _fieldInformations) { if (Field_{&fieldInformation.F

我有一个用户填写的XAML输入表单

我想验证这个表单

我有一个集合中的字段信息,我想循环并检查每个字段

但是,当字段位于字符串中时,如何访问该字段的名称,例如当fieldInformation.FieldName=“CompanyName”我想选中“field\u 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 });

这不只是代码隐藏文件中的FindName调用吗,还是我遗漏了什么

TextBox fieldTB = (TextBox)this.FindName("Field_CompanyName");

另外,如果您愿意从代码后面添加UI元素,则必须使用
注册名称(“Field\u CompanyName”,some\u实例)
方法调用,因为
FindName
默认情况下仅适用于XAML中声明的元素