Доступ к табличке данных с именем

80 просмотра

1 ответ

У меня много TabItemс, но только один DataGridв DataTemplate.

Теперь я буду иметь доступ к DataGrid, потому что я хочу изменить содержание ...

<Window.Resources>
    <DataTemplate x:Key="ContentTabItem">
        <DataGrid Grid.Row="1" Name="_uiDataGrid"/>
    </DataTemplate>
</Window.Resources>
<Grid>
    <TabControl Name="_uiTabControl" SelectionChanged="_uiTabControl_SelectionChanged">
        <TabItem Name="_uiTabItembla1" Header="bla1" ContentTemplate="{StaticResource ResourceKey=ContentTabItem}"/>
        <TabItem Name="_uiTabItembla2" Header="bla2" ContentTemplate="{StaticResource  ResourceKey=ContentTabItem}"/>
    </TabControl>
</Grid>

Я не могу получить доступ с именем _uiDataGrid

Автор: mty Источник Размещён: 08.11.2019 11:28

Ответы (1)


0 плюса

Попробуйте что-то вроде этого, чтобы получить сетку данных из шаблона содержимого презентаторов контента:

var contentPresenter = FindVisualChild<ContentPresenter>(_uiTabControl);
var dt = contentPresenter.ContentTemplate;
var datagrid = DataTemplateName.FindName("_uiDataGrid", contentPresenter) 
as DataGrid;

Для нахождения визуального дочернего элемента, обратитесь к функциям FindVisualChildren()и FindVisualChild()как упомянуто в этом сообщении stackoverflow

public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj)
       where T : DependencyObject
{
    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            if (child != null && child is T)
            {
                yield return (T)child;
            }

            foreach (T childOfChild in FindVisualChildren<T>(child))
            {
                yield return childOfChild;
            }
        }
    }
}

public static childItem FindVisualChild<childItem>(DependencyObject obj)
    where childItem : DependencyObject
{
    foreach (childItem child in FindVisualChildren<childItem>(obj))
    {
        return child;
    }

    return null;
}
Автор: ViVi Размещён: 20.08.2016 05:45
Вопросы из категории :
32x32