I am stuck in a situation where i want to call OnTap
event of my user control inside a listbox. The issue is that the event is fired every time I tap the user control, but I want to call all of the tap events at once (based on listbox items). For this I have created a user control in which I have overridden the OnTap
event:
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);
}
When I tap an item in the listbox, this event is called, which is okay.
I created a button which I want to call individual listbox item tap events, at the click of button.
Below is my failed attempt (My user control is inside listbox as an item):
<ListBox
x:Name="lsbQuranData"
Grid.Row="2" Foreground="Black"
ScrollViewer.VerticalScrollBarVisibility="Visible"
>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Width="480">
<local:SuraWithProgressBar
Width="480"
SuraNumber ="{Binding SuraNumber, Mode=TwoWay}"
SuraName="{Binding SuraTName}"
Tap="DownloadSura"
></local:SuraWithProgressBar>
<Line
X1="0"
X2="480"
Y1="0"
Y2="0"
VerticalAlignment="Bottom"
StrokeThickness="2"
Stroke="Black"
/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
The button click event as below:
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)
{
}
How do I call individual user controls' tap events?
Thanks!