繁体   English   中英

如何访问tabItems内部的文本框值进行存储

[英]How to access textbox values inside tabItems for storing

如果标题不好,我深表歉意,我不知道该如何表达自己的意见。

我有一个用C#,WPF编写的程序,其中有许多TabItem。 在这些TabItem中,我有几个文本框,复选框等。在这些“主要” TabItem中,还包含了包含文本框,复选框等的其他TabItem。我要做的是能够将这些控件中的所有值存储在xml文件中。 我已经通过站在一个主要的TabItems中并执行以下代码来对所有可见的对象执行此操作:

List<TextBox> allTxt = FindVisualChildren<TextBox>(this).ToList<TextBox>(); // this here is my MainWindow (Interaction logic for MainWindow.xaml)
   foreach (TextBox t in allTxt)
        list.Add(t.Name + ":" + t.Text); // list is a List I store these in
//The same goes later for checkboxes etc. 

然后,我将它们存储在所需的文件中,对于可见的文件,它可以正常工作。 但是,如何包含所有“第二个” TabItem中的所有控件以及“主要”中的所有控件呢? 我已经测试过在第一个完成后将Selected TabItem更改为增加该值,但这似乎不起作用...

该程序的基本草图(不,我没有得到很好的“美术课”成绩)

也许有点“强力”方法,但它很干净而且易于阅读...

List<String> textBoxes = new List<String>();
List<String> checkBoxes = new List<String>();
foreach (TabPage mainPage in mainTabControl.TabPages)
{
    foreach (Control c in mainPage.Controls)
    {
        if (c is TabControl)
        {
            foreach (TabPage secondPage in ((TabControl)c).TabPages)
            {
                foreach (Control c2 in secondPage.Controls)
                {
                    if (c is CheckBox)
                        checkBoxes.Add(((CheckBox)c).Name + ":" + (((CheckBox)c).Checked ? "True" : "False"));
                    else if (c is TextBox)
                        textBoxes.Add(((TextBox)c).Name + ":" + (((TextBox)c).Text));
                    //... add more for other controls to capture
                }
            }
        }
        else
        {
            if (c is CheckBox)
                checkBoxes.Add(((CheckBox)c).Name + ":" + (((CheckBox)c).Checked ? "True" : "False"));
            else if (c is TextBox)
                textBoxes.Add(((TextBox)c).Name + ":" + (((TextBox)c).Text));
            //... add more for other controls to capture
        }
    }
}

您应该给内部标签指定名称,然后使用它们的名称搜索tham。 在这里您可以找到一些解释: 按名称查找控件

作为迭代所有控件的替代方法,您还可以考虑对它们进行数据绑定。 这样,您只需要从数据源获取数据并将其写入XML文件即可。

类中的每个控件都必须有一个属性,在XAML中,您必须将每个控件绑定到其属性。 然后,您必须将窗口的数据上下文设置为该类的实例。

您可能需要阅读一些有关WPF数据绑定的信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM