Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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# 一次调用lisbox中用户控件的OnTap事件_C#_Windows Phone 8 - Fatal编程技术网

C# 一次调用lisbox中用户控件的OnTap事件

C# 一次调用lisbox中用户控件的OnTap事件,c#,windows-phone-8,C#,Windows Phone 8,我陷入了这样一种情况:我想在列表框中调用我的用户控件的OnTap事件。问题是每次点击用户控件时都会触发该事件,但我希望一次调用所有点击事件(基于列表框项)。为此,我创建了一个用户控件,其中我覆盖了OnTap事件: protected override void OnTap(System.Windows.Input.GestureEventArgs e) { //Get Reciter and download in Reciter folder if (!downloadClicked)

我陷入了这样一种情况:我想在列表框中调用我的用户控件的
OnTap
事件。问题是每次点击用户控件时都会触发该事件,但我希望一次调用所有点击事件(基于列表框项)。为此,我创建了一个用户控件,其中我覆盖了
OnTap
事件:

protected override void OnTap(System.Windows.Input.GestureEventArgs e)
{
  //Get Reciter and download in Reciter folder
  if (!downloadClicked)
  {
    downloadClicked=true;
    if (!string.IsNullOrEmpty(SuraNumber))
    {
      verseNumber = 0;
      verseByverseFiles = new List<string>();
      selectedReciter = DataSource.getSelectedReciter();
      DataSource.addVerseByVerseFiles(Convert.ToByte(SuraNumber), verseByverseFiles, selectedReciter);
      txtProgress.Text = "Downloading...";
      downloadFile();
    }
  }
  base.OnTap(e);
}
protected override void OnTap(System.Windows.Input.GestureEventArgs e)
{
//获取背诵器并下载到背诵器文件夹中
如果(!downloadClicked)
{
downloadClicked=true;
如果(!string.IsNullOrEmpty(SuraNumber))
{
verseNumber=0;
verseByverseFiles=新列表();
selectedRecitter=DataSource.getselectedRecitter();
addVerseByVerseFiles(Convert.ToByte(SuraNumber)、verseByverseFiles、SelectedRecitter);
txtProgress.Text=“下载…”;
下载文件();
}
}
base.OnTap(e);
}
当我点击列表框中的某个项目时,会调用此事件,这是正常的

我创建了一个按钮,我想在单击按钮时调用单个listbox项点击事件

以下是我失败的尝试(我的用户控件作为一项位于列表框中):


按钮单击事件如下所示:

private void Button_Click(object sender, RoutedEventArgs e)
{
  if (!downloadClicked)
  {
    downloadClicked = true;
    for (int rowIndex = 0; rowIndex < 114; rowIndex++)
    {
      //Download All (Call individual tap event of the user control
    }
  }
  else
    MessageBox.Show("Please wait, downloading...");
}

private void DownloadSura(object sender, System.Windows.Input.GestureEventArgs e)
{

}
private void按钮\u单击(对象发送者,路由目标)
{
如果(!downloadClicked)
{
downloadClicked=true;
对于(int-rowIndex=0;rowIndex<114;rowIndex++)
{
//下载所有(调用用户控件的单个点击事件
}
}
其他的
MessageBox.Show(“请稍候,正在下载…”);
}
private void DownloadSura(对象发送者,System.Windows.Input.GestureEventArgs e)
{
}
如何调用单个用户控件的点击事件


谢谢!

我会直接将
ListBoxItem
的eventhandler中的代码封装到一个方法中,然后从
ListBoxItem
的eventhandler或
按钮的eventhandler调用此方法。或者我有什么错误吗

编辑:


尝试通过它的x:Name获取
列表框
,并迭代
集合。之后,您拥有
列表框项
s并可以尝试执行您的操作。我不知道
数据源.getSelectedRecitter();
数据源.addVerseByVerseFiles(Convert.ToByte(SuraNumber)中发生了什么,verseByverseFiles,SelectedRecitter);
但你应该以编程方式解决事件引发问题。我认为这不起作用。

这就是我所做的,当我调用方法时,它会转到方法(DownloadSura,它是listbox中项目的点击事件),但它不调用覆盖方法,但当我用手点击控件时,它会调用覆盖方法。(这就是为什么我感到困惑的原因,当点击控件调用覆盖方法时,但当调用方法时,它不会)这不会起作用,因为您只是调用eventhandler。但是控件的事件不会引发。因此,既不会调用过度的
OnTap
事件,也不会调用默认的
OnTap
事件。谢谢,这是个问题,请问我该如何做?我可以获得单个用户控件,但我不知道如何调用该方法?在我的美国er控件,我没有单击事件来覆盖它,这样我就可以创建自定义的单击事件处理程序。(用户控件支持单击吗?)你必须这样做吗?是什么使每个控件的OnTap调用独立?将其分离为一个函数,并从任何地方调用它。因此,你想要顶部调用“下载”在ListBox的所有项目上?您应该在模型(或viewmodel)本身中放置一个“下载”方法。因此,如果ListBox的项目源是ICollection,那么MyItem应该有一个下载方法。然后只需访问集合并调用下载方法。这有助于我解决问题。[一次调用lisbox中用户控件的OnTap事件][1][1]:这帮助我解决了问题。
private void Button_Click(object sender, RoutedEventArgs e)
{
  if (!downloadClicked)
  {
    downloadClicked = true;
    for (int rowIndex = 0; rowIndex < 114; rowIndex++)
    {
      //Download All (Call individual tap event of the user control
    }
  }
  else
    MessageBox.Show("Please wait, downloading...");
}

private void DownloadSura(object sender, System.Windows.Input.GestureEventArgs e)
{

}