C# 为每个编程创建的文本块添加一个eventHandler
我正在开发一些windows phone应用程序。我有这个密码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
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 );
}
}