我使用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项目有效
如何解决这个问题?
答案 0 :(得分:0)
这是因为TblRain_Tapped
中的以下行:
Debug.WriteLine(tblRain.Text);
您正在使用在每个for循环迭代中更改的字段tblRain
,并且在上一次迭代中,它被设置为您的上一个TextBlock
。
正确到Debug
,请使用:
var tb = sender as TextBlock;
Debug.WriteLine(tb.Text);