public void UpdateCardToolTip(Point mousePos) { // See if the mouse is inside the stack of card lists Point relativePos = CardView.PointFromScreen(mousePos); bool mouseInsideCardList = relativePos.X > 0 && relativePos.X < CardView.ActualWidth && relativePos.Y > 0 && relativePos.Y < CardView.ActualHeight; if (mouseInsideCardList) { // Determine the actual card moused over. var cardSize = CardView.ActualHeight / CardList.Items.Count; var cardIndex = (int)(relativePos.Y / cardSize); if (cardIndex < 0 || cardIndex >= CardList.Items.Count) { CardToolTip.Visibility = Visibility.Collapsed; return; } CardToolTip.SetValue( DataContextProperty, CardList.Items.Cast <AnimatedCard>().ElementAt(cardIndex).Card); // Set the top of the tooltip so it appears next to the card. var cardTopPos = cardSize * cardIndex; Canvas.SetTop(CardToolTip, cardTopPos); CardToolTip.Visibility = Visibility.Visible; } else { CardToolTip.Visibility = Visibility.Collapsed; } }
public void ShowAdditionalToolTips() { if (!Config.Instance.AdditionalOverlayTooltips) { return; } var card = ToolTipCard.DataContext as Card; if (card == null) { return; } if (card.EntourageCardIds.Length == 0) { HideAdditionalToolTips(); return; } StackPanelAdditionalTooltips.Children.Clear(); foreach (var id in card.EntourageCardIds) { var tooltip = new CardToolTip(); tooltip.SetValue(DataContextProperty, Database.GetCardFromId(id)); StackPanelAdditionalTooltips.Children.Add(tooltip); } StackPanelAdditionalTooltips.UpdateLayout(); //set position var tooltipLeft = Canvas.GetLeft(ToolTipCard); var left = tooltipLeft < Width / 2 ? tooltipLeft + ToolTipCard.ActualWidth : tooltipLeft - StackPanelAdditionalTooltips.ActualWidth; Canvas.SetLeft(StackPanelAdditionalTooltips, left); var top = Canvas.GetTop(ToolTipCard) - (StackPanelAdditionalTooltips.ActualHeight / 2 - ToolTipCard.ActualHeight / 2); if (top < 0) { top = 0; } else if (top + StackPanelAdditionalTooltips.ActualHeight > Height) { top = Height - StackPanelAdditionalTooltips.ActualHeight; } Canvas.SetTop(StackPanelAdditionalTooltips, top); StackPanelAdditionalTooltips.Visibility = Visible; }
public void ShowAdditionalToolTips() { if(!Config.Instance.AdditionalOverlayTooltips) return; var card = ToolTipCard.DataContext as Card; if(card == null) return; if(card.EntourageCardIds.Length == 0) { HideAdditionalToolTips(); return; } StackPanelAdditionalTooltips.Children.Clear(); foreach(var id in card.EntourageCardIds) { var tooltip = new CardToolTip(); tooltip.SetValue(DataContextProperty, Database.GetCardFromId(id)); StackPanelAdditionalTooltips.Children.Add(tooltip); } StackPanelAdditionalTooltips.UpdateLayout(); //set position var tooltipLeft = Canvas.GetLeft(ToolTipCard); var left = tooltipLeft < Width / 2 ? tooltipLeft + ToolTipCard.ActualWidth : tooltipLeft - StackPanelAdditionalTooltips.ActualWidth; Canvas.SetLeft(StackPanelAdditionalTooltips, left); var top = Canvas.GetTop(ToolTipCard) - (StackPanelAdditionalTooltips.ActualHeight / 2 - ToolTipCard.ActualHeight / 2); if(top < 0) top = 0; else if(top + StackPanelAdditionalTooltips.ActualHeight > Height) top = Height - StackPanelAdditionalTooltips.ActualHeight; Canvas.SetTop(StackPanelAdditionalTooltips, top); StackPanelAdditionalTooltips.Visibility = Visible; }