2009-03-26 2 views
10

사용자가 채우는 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 }); 

답변

37

뒤에 당신의 코드에서 그 단지 FindName 호출이 없습니다 파일 또는 내가 뭔가 빠진거야? 또한

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

작업 중. 고맙습니다 – deanpodgornik

6

당신은 XAML 내에서 선언 된 요소에 대해 기본적으로 FindName 작품으로 RegisterName("Field_CompanyName", some_instance) 메서드 호출을 사용해야합니다 뒤에 코드에서 UI 요소를 추가하고자하는 경우.

관련 문제