c# - 如何在 XAML 中动态访问元素名称?

标签 c# wpf xaml

我有一个用户填写的 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 });

最佳答案

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

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

关于c# - 如何在 XAML 中动态访问元素名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/685077/

相关文章:

c# - 如何使用 NumberFormatInfo 删除负值的括号

c# - ??运算符未触发 DataTable DataRow 中的 System.DBNull 类型

c# - 如何通过 IDataReader 读取图像

c# - 重建相机 "Look At"功能的矩阵变换

c# - 如何将带有绘图的 Canvas 放置在 ListView 控件的特定列内?

wpf - 将上下文菜单命令绑定(bind)到不在上下文视觉树中的 ViewModel

c# - 如何以通过 AAD 进行身份验证的 ASP.NET MVC 站点中的登录用户身份查询 Dynamics 365 CRM?

c# - 确定 WPF 元素相对于某个父元素的边界矩形

c# - 菜单设计和事件wpf

wpf - 导致属性触发切换复选框 WPF DataGrid