2016-12-17 1 views
0

Im новое для WPF и im, пытающееся добавить вкладки в мой TabControl. Функция LoadTable возвращает DataTable, который содержит информацию, и должен быть представлен в DataGrid для каждой вкладки.Добавление Tabitems динамически с помощью Datagrid

for (int i = 1; i <= number_MaxSemester; i++) 
{ 
    TabItem item = new TabItem(); 

     // Name of TabItem 
     item.Header = i + ". Semester"; 

     //Contains the Data from Database 
     item.DataContext = loadTable(); 

     Tabs.Items.Add(item); 
} 

loadTable Функция, которая возвращает DataTable

public DataTable loadTable() 
    { 
     DataTable dt = new DataTable(); 

     try 
     { 
      //Open Connection to Database 
      using (SQLiteConnection con = new SQLiteConnection(cs)) 
      { 
       //Command string for the Sqlite Command 
       string query = "SELECT Fach, Note, Statusfach, Versuch from infostudent WHERE username = + '" + UserName.Content + "'"; 

       SQLiteDataAdapter dbAdapter = new SQLiteDataAdapter(query, con); 


       //Fill Data with SQLite Data 
       dbAdapter.Fill(dt); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

     return dt; 
    } 

Вот XAML код:

<TabControl x:Name="Tabs" Margin="10,61,0,57" Width="584" HorizontalAlignment="Left"> 
     <TabControl.ItemTemplate> 
      <DataTemplate> 
       <DataGrid /> 
      </DataTemplate> 
     </TabControl.ItemTemplate> 
    </TabControl> 
+0

Итак, что ваш вопрос именно? Я не вижу. Поскольку это ваш первый вопрос, пожалуйста, прочитайте [FAQ] и [ask] как начало .. –

+0

@ SonerGönül Данные в DataGrid не отображаются. Посмотрите вверх ive добавил вопрос – y4cO

+0

Вы проверили эту ссылку [WPF C# Программно добавление и перемещение вкладок] (http://stackoverflow.com/questions/4968367/wpf-c-sharp-programatically-adding-and-moving-tabs) –

ответ

0

Установите Content свойство TabItem к вашему DataTable:

for (int i = 1; i <= number_MaxSemester; i++) 
{ 
    TabItem item = new TabItem(); 

    // Name of TabItem 
    item.Header = i + ". Semester"; 

    //Contains the Data from Database 
    item.Content = loadTable(); 

    Tabs.Items.Add(item); 
} 

... и связать свойство ItemsSource из DataGrid в DefaultView из DataTable в Content Шаблон TabControl:

<TabControl x:Name="Tabs"> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <DataGrid ItemsSource="{Binding DefaultView}" /> 
      </StackPanel> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 
+0

большое вам спасибо! теперь работает! Проблема Binding была проблемой – y4cO

Смежные вопросы