我從windows phone工具包中具有以下HubTile控件實現,並且除了從選定的圖塊實現點擊事件外,所有內容都正常工作。我不確定如何將特定磁貼的tap連接到代碼後面的Tap事件處理程序(它應該簡單地導航到我的項目中的新頁面)。我至今如下:如何將點擊事件添加到多個HubTiles
MainPage.xaml中
<ListBox Grid.Row="0" x:Name="tileList" toolkit:TiltEffect.IsTiltEnabled="True">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<toolkit:HubTile Title="{Binding Title}" Margin="3"
Notification="{Binding Notification}"
DisplayNotification="{Binding DisplayNotification}"
Message="{Binding Message}"
GroupTag="{Binding GroupTag}"
Source="{Binding ImageUri}"
Tap="hubTile_Tap">
</toolkit:HubTile>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
TileItem.cs
public class TileItem
{
public string ImageUri
{
get;
set;
}
public string Title
{
get;
set;
}
public string Notification
{
get;
set;
}
public bool DisplayNotification
{
get
{
return !string.IsNullOrEmpty(this.Notification);
}
}
public string Message
{
get;
set;
}
public string GroupTag
{
get;
set;
}
//not sure how to implement this?
public string Tap
{
get;
set;
}
}
MainPage.xaml.cs中
#region Ctr
public MainPage()
{
InitializeComponent();
CreateHubTiles();
}
#endregion
private void CreateHubTiles()
{
List<TileItem> tileItems = new List<TileItem>()
{
//there will be at least 2 distinct tiles linking to seperate pages
new TileItem() { ImageUri = "/Images/shareStatusImage.jpg", Title = "status", /*Notification = "last shared link uri",*/ Message = "last shared status message", GroupTag = "TileGroup", Tap = "shareStatus_Tap" },
new TileItem() { ImageUri = "/Images/shareLinkImage.jpg", Title = "link", /*Notification = "last shared status message",*/ Message = "last shared link uri", GroupTag = "TileGroup", Tap = "shareLink_Tap" }
};
this.tileList.ItemsSource = tileItems;
}
#region Navigation
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
HubTileService.UnfreezeGroup("TileGroup");
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
HubTileService.FreezeGroup("TileGroup");
}
#endregion
#region Event Handlers
private void hubTile_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
TileItem tap = sender as TileItem;
string _tap = tap.Tap.ToString(); //NullReferenceException occurs here
switch(_tap)
{
case "shareStatus_Tap":
this.NavigationService.Navigate(new Uri("/Views/ShareStatusPage.xaml", UriKind.Relative));
break;
case "shareLink_Tap":
this.NavigationService.Navigate(new Uri("/Views/ShareLinkPage.xaml", UriKind.Relative));
break;
}
}
#endregion
在模擬器中的MainPage加載活動hubs工作,但tap事件會導致NullReferenceException,而在我的實際設備上,應用程序會這樣做一點都不加載?
這就是爲什麼我建議把斷點,以確保。是的,你可以得到一些奇怪的情況下,特別是取決於模板內的東西有多複雜...... – 2012-08-14 20:13:00