在我的项目中,我有一个 longlistselector(来自 Windows Phone Toolkit)。我为它制作了一个自定义项目模板,现在我必须区分其中的目标元素。
例如,我有一些文字和一张图片。如果我点击图像,我应该启动一个 WebBrowserTask 来加载大图像。如果我点击文本,我应该加载包含完整文章的页面。
所以我需要 ItemTemplate 中的目标元素,或者我需要绑定到该 ItemTemplate 的数据。
对此有什么想法吗?
在我的项目中,我有一个 longlistselector(来自 Windows Phone Toolkit)。我为它制作了一个自定义项目模板,现在我必须区分其中的目标元素。
例如,我有一些文字和一张图片。如果我点击图像,我应该启动一个 WebBrowserTask 来加载大图像。如果我点击文本,我应该加载包含完整文章的页面。
所以我需要 ItemTemplate 中的目标元素,或者我需要绑定到该 ItemTemplate 的数据。
对此有什么想法吗?
将您想要的项目绑定到模板中图像/文本块的 Tag 属性,然后捕获 'tapped' 或 'mouseleftbuttondown' 事件并提取项目。这样你就知道是哪一个了。
在您的 XAML 中:
<DataTemplate>
<StackPanel>
<Image Source={Binding SourceField} Tag={Binding} MouseLeftButtonDown="myImage_MouseLeftButtonDown" />
<TextBlock Text={Binding TextField} Tag={Binding} MouseLeftButtonDown="myImage_MouseLeftButtonDown" />
</StackPanel>
</DataTemplate>
在您的 C# 中:
private void myImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Image image = sender as Image;
if (image != null && image.Tag != null && image.Tag is YourType)
{
YourType item = image.Tag as YourType;
// Load the full image or browser or whatever you want
}