【问题标题】:WPF Access datagrid in tabsWPF 访问选项卡中的数据网格
【发布时间】:2016-04-11 10:44:45
【问题描述】:

我有一个模板化的 tabcontrol,每个选项卡中都有模板化的数据网格,如下所示:

<TabControl>
    <TabControl.ItemTemplate >
      <DataTemplate>
        ....
      </DataTemplate>
    </TabControl.ItemTemplate>

    <TabControl.ContentTemplate>
        <DataTemplate>
            <DataGrid>

                <DataGrid.ColumnHeaderStyle>
                    ...
                </DataGrid.ColumnHeaderStyle>

                <DataGrid.CellStyle>
                    ...
                </DataGrid.CellStyle>

            </DataGrid>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

我在代码中省略了数据绑定,以便更好地阅读。

我想在数据网格(行和列)中指定一个选项卡和一个单元格,然后单击一个按钮使程序打开指定的标签并向下滚动表格以自动突出显示指定的单元格,类似于当您单击编译错误时在 Visual Studio 中完成,它会将您带到文件中错误所在的行。

我正在使用 Tab.SelectedIndex 更改选定的选项卡,这很有效,但我无法访问选项卡内的数据网格,因为它仅在手动单击选项卡时生成。我尝试使用 Load 但它不起作用。如何生成和访问每个选项卡内的数据网格?

【问题讨论】:

    标签: wpf datagrid tabcontrol


    【解决方案1】:

    是因为它是异步加载的吗?尝试使用 Loaded 事件加载后执行您的网格选择。

    TabItem selectedTab = MyTabControl.SelectedItem as TabItem;
    selectedTab.Loaded+= delegate { //select grid row };
    
    //or if this works, I'm sure it would have been initialized in the process of being selected?
    TabItem selectedTab = MyTabControl.SelectedItem as TabItem;
    selectedTab.MyGrid...
    

    或者可能是 selectedTab.Initialized。

    选项卡项也是 tabControl 的子项,因此您应该能够使用 Children[index] as TabItem 访问它们

    【讨论】:

    • 我什至无法访问标签我不知道如何使用模板。
    • “我正在使用 Tab.SelectedIndex 更改选定的选项卡,这可以工作,但我无法访问选项卡内的数据网格”您可以输入代码以显示您的身份吗想多做一点?
    • 我这样命名我的 TabControl: 之后我在代码隐藏中选择了标签,如下所示:MyTabControl.SelectedIndex = theIndexIWant;但是我不知道如何获取我刚刚选择的选项卡的内容,因为它还没有加载。
    • 您正在设置选项卡控件的 ItemsSource 并且它们是动态创建的?尝试使用 MyTabControl.SelectedItem
    猜你喜欢
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多