Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将带参数的函数应用于WP8中动态创建的按钮_C#_Xml_For Loop_Windows Phone 8 - Fatal编程技术网

C# 将带参数的函数应用于WP8中动态创建的按钮

C# 将带参数的函数应用于WP8中动态创建的按钮,c#,xml,for-loop,windows-phone-8,C#,Xml,For Loop,Windows Phone 8,在这里,我再次尝试发现Windows Phone 8 C#编码的美丽世界 这一次,我的问题是: 通过正常使用我的应用程序,我得到了一个XML文件。让我们承认,几分钟后,XML文件如下所示: <itemList> <Item> <Name>Item Name</Name> //Other Item children elements here </Item> <Item>

在这里,我再次尝试发现Windows Phone 8 C#编码的美丽世界

这一次,我的问题是:

通过正常使用我的应用程序,我得到了一个XML文件。让我们承认,几分钟后,XML文件如下所示:

<itemList>
    <Item>
        <Name>Item Name</Name>
        //Other Item children elements here
    </Item>
    <Item>
        <Name>Item 2 Name</Name>
        //Other Item children elements here
    </Item>
</itemList>
此字符串数组用于使用for循环动态创建按钮:

for (int i = 0; i < Names.Length; i++)
{
    Button dynamicButton = new Button();
    dynamicButton.Content = Names[i];
    //other stuff on the button
    ListOfButtons.Children.Add(dynamicButton); //ListOfButton is a StackPanel.
}
dynamicButton.Click += (s, e) => resume(Names[i], Element2[i], Element3[i]);
但这显然是不起作用的,因为我已经达到了它的最大值,因为我需要增加它。所以,当我点击任何一个按钮时,我得到了一个越界异常。即使没有显示,单击Item1按钮也会显示数组中最后一个元素的信息

所以,我正在寻找一种方法,使每个按钮在点击时都有自己的信息显示。我不知道我是否解释得很好,因为英语不是我的主要语言,如果需要,请询问更多细节


万分感谢

使用MVVM的方法会更优雅,但为了简单起见,我将继续使用您的代码

您需要的是在每个按钮上存储一些附加数据以供以后使用。您可以为此使用
标记
属性。假设您有一个名为Data的类,它将保存您需要的所有附加数据。创建按钮时,分配
标记

 dynamicButton.Tag = new Data{...} //custom data class containing the needed data from Names[i], Element2[i], etc.
然后您可以像这样使用单击处理程序中的数据

dynamicButton.Click += (s, e) => 
{
    var button = s as Button;
    var data = button.Tag as Data;
    //do whatever you want with the data
}

为什么不尝试使用
字典
,它使用
名称[i]
作为键,并将数据显示为值?首先,我想知道“什么,唯一的方法是创建一个新类?真的没有更简单的方法?”然后我尝试了,这是毫无困难的。谢谢!不需要新类,可以使用元组,但可读性较差
dynamicButton.Click += (s, e) => 
{
    var button = s as Button;
    var data = button.Tag as Data;
    //do whatever you want with the data
}