动态轴项控制事件

时间:2016-01-27 02:27:35

标签: c# windows-runtime win-universal-app

我使用Event创建动态数据透视表项和控件。 但我的代码只在最后一个透视项目控件的活动事件

public void initPivotItems(int numberOfPivot)
{
    for (int i = 0; i < numberOfPivot; i++)
    {
        var itemTemplate =
            @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">  
            <StackPanel Margin=""0,0,0,17"" HorizontalAlignment=""Stretch"" Height=""78"" Orientation=""Vertical""> 
                <TextBlock Text=""{Binding Title}"" TextWrapping=""Wrap"" Style=""{StaticResource PhoneTextExtraLargeStyle}"" Width=""Auto""/>
                <TextBlock Text=""{Binding Description}"" TextWrapping=""Wrap"" Margin=""12,-6,12,0"" Style=""{StaticResource PhoneTextSubtleStyle}"" Width=""Auto""/>
            </StackPanel>  
         </DataTemplate>";


        //Creating Pivot Item
        PivotItem newPiv = new PivotItem();
        newPiv.Header = "Pivot Header"; //defining a header

        //Content for the Pivot Item
        tblRain = new TextBlock();
        tblRain.Text = "Hello " + i;
        tblRain.Tapped += TblRain_Tapped;
        //Adding the list to the Pivot Item
        newPiv.Content = tblRain; //Adding list to Pivot Item
        PivotMyGarden.Items.Add(newPiv); //Adding Pivot Item
    }
}

private void TblRain_Tapped(object sender, TappedRoutedEventArgs e)
{  
    Debug.WriteLine(tblRain.Text);
}

因此,当我测试此代码时,Debug.WriteLine仅显示&#34; Hello 1 &#34;一旦我在Pivot 0 :(。那就是代码tblLight.Tapped + =仅对最后一个Pivot项目有效

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是因为TblRain_Tapped中的以下行:

Debug.WriteLine(tblRain.Text);

您正在使用在每个for循环迭代中更改的字段tblRain,并且在上一次迭代中,它被设置为您的上一个TextBlock

正确到Debug,请使用:

var tb = sender as TextBlock;
Debug.WriteLine(tb.Text);