Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# 为每个编程创建的文本块添加一个eventHandler_C#_Wpf_Windows Phone 8.1 - Fatal编程技术网

C# 为每个编程创建的文本块添加一个eventHandler

C# 为每个编程创建的文本块添加一个eventHandler,c#,wpf,windows-phone-8.1,C#,Wpf,Windows Phone 8.1,我正在开发一些windows phone应用程序。我有这个密码 for (int b = 1; b < 7; b++){ for (int c = 0; c < 7; c++){ date = new TextBlock(); date .Margin = new Thickness(1); date .TextAlignment = TextAlignment.Center; date .FontSiz

我正在开发一些windows phone应用程序。我有这个密码

for (int b = 1; b < 7; b++){

      for (int c = 0; c < 7; c++){

        date = new TextBlock();
        date .Margin = new Thickness(1);
        date .TextAlignment = TextAlignment.Center;
        date .FontSize = 15;
        date .HorizontalAlignment = HorizontalAlignment.Stretch;
        date .VerticalAlignment = VerticalAlignment.Center;
        date .Tapped += date_Taped;
        string middle= TIME.days[a].ToString();
        if (middle== "0") { middle= ""; }
        date.Text = middle;
        a++;
        Grid.SetRow(date , b);
        Grid.SetColumn(date , c);
        gridDatum.Children.Add(date );
      }

  }
for(int b=1;b<7;b++){
对于(int c=0;c<7;c++){
日期=新文本块();
日期。边距=新厚度(1);
date.TextAlignment=TextAlignment.Center;
日期:FontSize=15;
date.HorizontalAlignment=HorizontalAlignment.Stretch;
date.VerticalAlignment=VerticalAlignment.Center;
日期.点击+=记录的日期;
字符串middle=TIME.days[a].ToString();
如果(中间==“0”){middle=”“;}
date.Text=中间;
a++;
Grid.SetRow(日期,b);
Grid.SetColumn(日期,c);
gridDatum.Children.Add(日期);
}
}

我正在向网格中添加值,最后我得到了我的colendar。这里的问题是,我想点击一个由DINAMIC创建的文本块,然后导航到idk页面。24.6.2015. 有什么想法吗?

如果我理解正确,您需要一种简单的方法来识别与点击的
文本块相对应的日期

您可以使用
TextBlock
Tag
属性来存储标识值,并在
date\u Taped
事件处理程序中进行检查

for (int b = 1; b < 7; b++)
{
    for (int c = 0; c < 7; c++)
    {
        date = new TextBlock();
        date .Margin = new Thickness(1);
        date .TextAlignment = TextAlignment.Center;
        date .FontSize = 15;
        date .HorizontalAlignment = HorizontalAlignment.Stretch;
        date .VerticalAlignment = VerticalAlignment.Center;

        date .Tag = new int[] { a, b, c };

        date .Tapped += date_Taped;
        string middle= TIME.days[a].ToString();
        if (middle== "0") { middle= ""; }
        date.Text = middle;
        a++;
        Grid.SetRow(date , b);
        Grid.SetColumn(date , c);
        gridDatum.Children.Add(date );
    }    
}

private void date_Taped(object sender, TappedRoutedEventArgs e)
{
    var textBlock = sender as TextBlock;
    var a = (textBlock.Tag as int[])[0];
    var b = (textBlock.Tag as int[])[1];
    var c = (textBlock.Tag as int[])[2];

    // Do stuff with a, b and c

    // Do other stuff
}

我不明白你想要实现什么。。。你在
date\u Taped
中做什么?为什么这对你不起作用?这是一个日历,如果你按下我表格中的文本块01.05.2015,它将在“05/01/2015页面”上向你发送地址,但事件处理程序只是一个日期处理程序。Taped我想添加date.Taped with text=“1.5.2015”,如果可能的话
for (int b = 1; b < 7; b++)
{
    for (int c = 0; c < 7; c++)
    {
        date = new TextBlock();
        date .Margin = new Thickness(1);
        date .TextAlignment = TextAlignment.Center;
        date .FontSize = 15;
        date .HorizontalAlignment = HorizontalAlignment.Stretch;
        date .VerticalAlignment = VerticalAlignment.Center;

        date .Tapped += new TappedEventHandler(
                            new Action<object, TappedRoutedEventArgs>((o, e) =>
                                {
                                    var x = a;  // You can use the current value of "a" here
                                    // Do stuff with a, b and c

                                    // Do other stuff
                                }));

        string middle= TIME.days[a].ToString();
        if (middle== "0") { middle= ""; }
        date.Text = middle;
        a++;
        Grid.SetRow(date , b);
        Grid.SetColumn(date , c);
        gridDatum.Children.Add(date );
    }    
}