我在我的应用程序中创建了一个拖放功能,我使用了一个代码示例并且工作正常。图片需要有点击事件,所以我使用了点击事件。但是我需要事件有不同的结果。
所以基本上,图像源的xaml代码就是这样。
Image Source="{Binding Image}" Tapped="chordClicked"
并在 C#
protected override void OnNavigatedTo(NavigationEventArgs e)
{
source.Add(new Item("Assets/Achord.png"));
source.Add(new Item("Assets/Bchord.png"));
source.Add(new Item("Assets/Cchord.png"));
source.Add(new Item("Assets/Dchord.png"));
source.Add(new Item("Assets/Echord.png"));
source.Add(new Item("Assets/Fchord.png"));
source.Add(new Item("Assets/Gchord.png"));
availableItems.ItemsSource = source;
chosenItems.ItemsSource = destination;
}
我尝试了一些关于如何执行此操作的变体,但都没有奏效,我认为下面的方法是有意义的。
暂时文本块只是一种测试点击是否正常工作的方法
private void chordClicked(object sender, TappedRoutedEventArgs e)
{
if (source = ("Assets/Achord.png"))
{
textBlock.Text = "A chord clicked";
}
private void dragItem(object sender, DragItemsStartingEventArgs e)
{
draggedItem = (Item)e.Items[0];
}
private void dropItemDestination(object sender, DragEventArgs e)
{
source.Remove(draggedItem);
destination.Insert(0, draggedItem);
}
private void dropItemSource(object sender, DragEventArgs e)
{
destination.Remove(draggedItem);
source.Add(draggedItem);
}
先感谢您
- 重击
您好,感谢您的帮助,我搜索了其他地方,最终在 msdn 论坛上找到了解决方案。
private void chordClicked(object sender, TappedRoutedEventArgs e)
{
var source = ((sender as Image).Source as BitmapImage).UriSource.LocalPath;
if (source == "/Assets/Achord.png")
{
textBlock.Text = "A chord clicked";
}
else if (source == "/Assets/Bchord.png")
{
textBlock.Text = "B chord clicked";
}
else if (source == "/Assets/Cchord.png")
{
textBlock.Text = "C chord clicked";
}
}
哪个工作正常。
非常感谢您的帮助,我将在不久的将来了解更多关于使用委托和 lambdas 的信息