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)
{
}