public Task<bool> Pin(TileInfo tileInfo) { var result = false; if (IsPinned(tileInfo)) { Unpin(tileInfo).Wait(); } var tileData = new StandardTileData { Title = tileInfo.DisplayName, BackgroundImage = tileInfo.LogoUri, Count = tileInfo.Count, BackTitle = tileInfo.AppName, BackBackgroundImage = new Uri("", UriKind.Relative), BackContent = tileInfo.DisplayName }; try { ShellTile.Create(new Uri(string.Format("/View/Shell.xaml?routeId={0}&routeName={1}", tileInfo.TileId, tileInfo.DisplayName), UriKind.Relative), tileData); result = true; } catch (Exception) { result = false; } return Task.FromResult<bool>(result); }
public Task<bool> Unpin(TileInfo tileInfo) { ShellTile tile = FindTile(tileInfo); if (tile != null) { tile.Delete(); } return Task.FromResult<bool>(true); }
public SegmentViewModel() { //http://msdn.microsoft.com/zh-cn/magazine/jj991977.aspx //http://www.cnblogs.com/valentineisme/archive/2013/05/20/3088114.html if (ViewModelBase.IsInDesignModeStatic) { InitSegments().ContinueWith(s => GetRealTimeInfo(null)); } else { Messenger.Default.Register<LineEntity>(this, "Navigate", async s => { SelectedLineEntity = s; Segments = null; await InitSegments(); }); //Messenger.Default.Register<Station2Entity>(this, "AutoRetrieveRealTimeInformation", s => //{ // if (null == s) return; // GetRealTimeInfo(s); //}); Messenger.Default.Register<string>(this, "PinLine", async s => { if (null != _segments) { // pin to start ISecondaryPinner pinner = new SecondaryPinner(); TileInfo tile = new TileInfo(); tile.AppName = "无锡公交"; tile.Count = 0; tile.Arguments = _selectedLineEntity.RouteId; tile.DisplayName = _selectedLineEntity.RouteName; tile.ShortName = _selectedLineEntity.RouteName; tile.TileId = _selectedLineEntity.RouteId; tile.LogoUri = new Uri("/Assets/Images/Logo210-210.png", UriKind.Relative); tile.WideLogoUri = new Uri("/Assets/Images/WideLogo434-210.png", UriKind.Relative); await pinner.Pin(tile); } }); } }
private ShellTile FindTile(TileInfo tileInfo) { return ShellTile.ActiveTiles.FirstOrDefault(tile => tile.NavigationUri.ToString() == string.Format("/View/Shell.xaml?routeId={0}&routeName={1}", tileInfo.TileId, tileInfo.DisplayName)); }
public bool IsPinned(TileInfo tileInfo) { return FindTile(tileInfo) != null; }