2012-08-03 36 views
3

我想在加載的鬆散xaml文件中定義的文本框中設置文本。 TextBoxes是應用程序的一部分。以編程方式在加載的鬆散xaml中的控件上設置文本文件

StackPanel LooseRoot; 

     if (fTeleFound == true) 
     { 
      try 
      { 
       using (System.IO.FileStream fs = new System.IO.FileStream(sXamlFileName, System.IO.FileMode.Open)) 
       { 
        LooseRoot = (StackPanel)System.Windows.Markup.XamlReader.Load(fs); 
       } 
       this.DetailsViewFrame.Children.Add(LooseRoot); 
      } 
      catch (ArgumentException ex) 
      { 
       // TBD Error xamlfile 
       return; 
      } 


      // set Elements 
      //foreach (TextBox textBox in LooseRoot.Children as TextBox) // does not work ? 
      //{ 
       // 

      //} 
     } 

XAML文件是這樣的:

<StackPanel Margin="10" Orientation="Vertical" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

<StackPanel Orientation="Horizontal"> 
    <Label Margin="5,5,0,5">CRCDB=</Label> 
    <TextBox Margin="0,5,5,5" Name="DetailsviewTB1" Height="20"/> 

    <Label Margin="10,5,0,5">Infonummer=</Label> 
    <TextBox Margin="0,5,5,5" Name="DetailsviewTB2" Height="20"/> 

    <Label Margin="10,5,0,5">Daten=</Label> 
    <TextBox Margin="0,5,5,5" Name="DetailsviewTB3" Height="20"/> 
</StackPanel> 

這是一個細節的觀點是要定製而不編譯應用程序新。編譯時不知道鬆散xaml文件的數量及其名稱。

如何動態地設置文本框上的文本?我有一個額外的XML文件,可以指定哪些數據來自哪個文本框。

回答

0

你能bind他們嗎?如果是這樣我肯定會推薦這麼做,那麼你只需要將DataContext設置爲包含這些值的對象。

否則,您可以用LogicalVisualTreeHelpers猴子周圍,遞歸地尋找具有正確名稱的文本框。您也可以嘗試FindName,其中包含您的StackPanel

+0

謝謝DataBinding實際上工作:) – user1550097 2012-08-03 23:55:36

+0

@ user1550097:很高興幫助:) – 2012-08-03 23:56:58

相關問題