Основной концепцией было бы, когда пользователь нажимает кнопку запуска и новый список возвращается из рабочего потока, он будет добавлен в «список списков», чем будет отображаться во вновь созданной вкладке. Однако я не могу показаться, чтобы захватить DataGrid на вновь созданный TabItem ..... все еще не мог выяснял, FindName и все методы судилиBind TabItem to List
XAML
<TabControl x:Name="tabMain" Margin="8,63,10,10" IsSynchronizedWithCurrentItem="True" >
<TabControl.ContentTemplate>
<DataTemplate>
<Grid x:Name="grMain" Background="#FFE5E5E5">
<DataGrid x:Name="dgResults" IsReadOnly="True" AutoGenerateColumns="False" AlternatingRowBackground="#FFAAE8D5" ItemsSource="{Binding data}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding col1}" Width="150">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Value" Binding="{Binding col2}" Width="*">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl >
CODE после получения списка
lstFinal.Add(e.Result as List<Col1Col2>);
TabItem newtab = new TabItem();
newtab.DataContext = lstFinal[lstFinal.Count - 1];
newtab.Header = txtMaterial.Text;
tabMain.Items.Add(newtab);
tabMain.SelectedIndex = tabMain.Items.Count - 1;
DataGrid dg = newtab.FindName("dgResults") as DataGrid;
dg.ItemsSource = lstFinal[lstFinal.Count - 1];
да, это моя проблема. Dg имеет значение null (не найдено). list isfine, только dg является проблемой – gericooper
Когда вы публикуете вопрос, тогда очень важно описать, что именно происходит неправильно - http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist , В вашей ситуации я бы попытался решить все на стороне ViewModel, http://msdn.microsoft.com/en-us/magazine/dd419663.aspx - это немного старая, но тем не менее прочная статья о MVVM, которая активно использует TabItems. –
Я едва знаком с точной механикой 'FindName' и ее использованием с шаблоном, поэтому я мог бы рекомендовать вам попробовать классический способ поиска с помощью' LogicalTreeHelper' - http://stackoverflow.com/questions/636383/how-can -i-найти-МОФ-контроля по имени или типа. Также прочитайте http://stackoverflow.com/questions/16101411/find-children-of-a-user-control-in-a-tab-item. –