从列表框中选择性地创建文本框列表



我有一个ListBox,它包含几个TextBlocks、一个Image和至少2个TextBoxs。然而,我的问题是,我需要能够检索ListBox中的所有TextBox;与第一个分开,然后将它们分配给C#中的List

这是.xaml:中的ListBox

<ListBox Margin="0,-20,0,0" Height="548" Name="listBoxNew">
    <TextBlock Name="textBlockName" Text="Name"/>
    <TextBox Name="textBoxName" Width="420" Margin="-12,0,0,0"/>
    <TextBlock Name="textBlockAdd" Text="Add" Margin="0,10,0,0"/>
    <TextBox Name="textBoxAdd" Width="420" Margin="-12,0,0,0"/>
    <Image Name="imageAdd" Source="/SecondApp%2b;component/Images/buttonAdd1.png" 
           Height="50" Margin="0,5,0,0" Tap="imageAdd_Tap" 
           toolkit:TiltEffect.IsTiltEnabled="True" 
           ManipulationStarted="imageAddExersize_ManipulationStarted"  
           ManipulationCompleted="imageAddExersize_ManipulationCompleted" />
</ListBox>

ListBox可能具有比.xaml中所示更多的TextBox,因为用户可以通过点击Image来创建更多。

非常感谢,我们非常感谢您的帮助。

只需使用Linq就可以完成。以下语句返回TextBox类型的ListBox中除第一个元素之外的所有元素:

var textBoxList = listBoxNew.Items.Where(x => x.GetType() == typeof(TextBox)).Skip(1).ToList();

请记住,您必须将using System.Linq;添加到您的文件中。

你好@Newbie我有解决方案给你。。我知道它不是优化的。。但它对你的案子有效。。我在比较这些类型。。在这里(不太好)。。我正在按按钮。。

List<object> lstobj;
    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        int t = listBoxNew.Items.Count();
        lstobj = new List<object>();
        TextBox obj = new TextBox();
        int p = 0;
        for (int i = 0; i < t; i++)
        {
            if(listBoxNew.Items[i].GetType()==obj.GetType())
            {
                if (p == 0)
                {
                    p = 1;
                    continue;
                }
                else
                {
                    lstobj.Add(listBoxNew.Items[i]);
                }
            }
        }
    }

希望它能帮助你。。

最新更新