2017-08-19 71 views
0

我想明白這是如何工作:在TabControl中動態生成的WPF選項卡 - 如何訪問其控件?

<DockPanel> 
    <Menu DockPanel.Dock="Top"> 
     <MenuItem Header="File"> 
      <MenuItem Header="Connect" Click="MenuItem_Click"/> 
     </MenuItem> 
    </Menu> 
    <TabControl 
    ItemsSource="{Binding Tabs}"> 
     <TabControl.ItemTemplate> 
      <!-- this is the header template--> 
      <DataTemplate> 
       <TextBlock 
       Text="{Binding Header}" /> 
      </DataTemplate> 
     </TabControl.ItemTemplate> 
     <TabControl.ContentTemplate> 
      <!-- this is the body of the TabItem template--> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock 
       Text="{Binding Content}" /> 
        <TabControl Height="538" TabStripPlacement="Left"> 
         <TabItem Header="Accueil" > 
          <Grid Margin="0,0,0,70"> 
           <RichTextBox Margin="0,0,-5,-17" Width="1020"></RichTextBox> 
           <TextBox TextWrapping="Wrap" Text="TextBox" Margin="0,484,-5,-63"/> 
          </Grid> 
         </TabItem> 
         <TabItem Header="Packets"> 
          <Grid> 

          </Grid> 
         </TabItem> 
         <TabItem Header="Map"> 
          <Grid> 

          </Grid> 
         </TabItem> 
         <TabItem Header="Plugin"> 
          <Grid> 

          </Grid> 
         </TabItem> 
        </TabControl> 

       </StackPanel> 
      </DataTemplate> 
     </TabControl.ContentTemplate> 
    </TabControl> 
</DockPanel> 

我動態生成的標籤。但是我想要做的是是要訪問每個標籤後面的代碼的內容。例如,我想訪問後面代碼中第二個選項卡的RichTextBox。我嘗試添加屬性名稱,但不起作用(即使它工作如何才能執行第一個選項卡的RichTextBox和第二個選項卡的RichTextBox之間的區別,因爲它們具有相同的名稱並以相同的方式生成) 。

然後我的問題是如何訪問控制TabItem的內部,當這一個動態生成。 '因爲傳統的方式,它會是它的名字,但在這裏我們不能。

我不知道我是否清楚,請隨時詢問更多細節。

+0

你不應該直接訪問控制,如果你動態生成的TabItems標籤控件的項目。如何做到這一點取決於你想訪問控件的位置和時間? – mm8

回答

0
  1. 加給一個名稱到您的控制:X:NAME = 「xxYourxxCustomxxTabxName」 到XAML
  2. 等待加載這樣的事情您的視圖代碼中落後:

    this.Loaded + =(source,arg) => { var test =(FrameworkElement)this.xxxYOURxxxTABxName.Items [0] };

從那裏,應該能夠訪問使用其項目屬性

相關問題