2009-03-26 5 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要素を追加して喜んでいる場合。

関連する問題