Как динамически обращаться к именам элементов в XAML? - PullRequest
14 голосов
/ 26 марта 2009

У меня есть форма ввода 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>

Code-Behind:

_fieldInformations.Add(new FieldInformation { FieldName = "CustomerID", FieldSize = 5 });
_fieldInformations.Add(new FieldInformation { FieldName = "CompanyName", FieldSize = 40 });
_fieldInformations.Add(new FieldInformation { FieldName = "ContactName", FieldSize = 30 });

Ответы [ 2 ]

43 голосов
/ 26 марта 2009

Разве это не просто вызов FindName в вашем коде файла или я что-то упустил?

TextBox fieldTB = (TextBox)this.FindName("Field_CompanyName");
6 голосов
/ 26 марта 2009

Также, если вы хотите добавить элементы пользовательского интерфейса из кода, вам придется использовать вызов метода RegisterName("Field_CompanyName", some_instance), поскольку FindName работает по умолчанию только для элементов, объявленных в XAML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...