C # WPF, динамическая всплывающая подсказка, MouseLeftButtonUp не запускается - PullRequest
0 голосов
/ 09 сентября 2018

есть код

ToolTip tt;

private void Grid_Loaded(object sender, RoutedEventArgs e)
{

    Label l = new Label();
    l.Content = "ToolTip";
    l.MouseLeftButtonUp += l_MouseLeftButtonUp;
    Grid.SetColumn(l, 0);
    Grid.SetRow(l, 0);
    grid.Children.Add(l);

    tt = new ToolTip();
    tt.StaysOpen = true;
    tt.MouseLeftButtonUp += tt_MouseLeftButtonUp;
    tt.Content = "12345";

}

void l_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{

    tt.IsOpen = true;

}

void tt_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{

    throw new NotImplementedException();

}

При щелчке мышью на всплывающей подсказке отображается метка. Затем, если всплывающая подсказка мыши нажата, событие tt_MouseLeftButtonUp никогда не срабатывает. Почему?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Спасибо. С всплывающим окном работает нормально

System.Windows.Controls.Primitives.Popup popup;

...

StackPanel sp = new StackPanel();
sp.Margin = new Thickness(10, 10, 10, 10);

Label l1 = new Label();
l1.Content = "Test label 1";
l1.Tag = 1;
l1.MouseLeftButtonUp += l1_MouseLeftButtonUp;

sp.Children.Add(l1);

Border b = new Border();
b.BorderBrush = System.Windows.Media.Brushes.Black;
b.Background = System.Windows.Media.Brushes.White;
b.BorderThickness = new Thickness(1);
b.CornerRadius = new CornerRadius(10);
b.Child = sp;

popup = new System.Windows.Controls.Primitives.Popup();
popup.Child = b;
popup.AllowsTransparency = true;
popup.Placement = System.Windows.Controls.Primitives.PlacementMode.Mouse;
popup.MouseLeave += popup_MouseLeave;

...

void popup_MouseLeave(object sender, MouseEventArgs e)
{
popup.IsOpen = false;
}
0 голосов
/ 09 сентября 2018

Окно подсказок не может принять фокус, вместо этого вы можете использовать элемент управления Popup. Нажмите на него

вы создаете всплывающие подсказки, которые остаются открытыми, пока пользователь не щелкнет где-то еще. Однако свойство ToolTipService.ShowDuration Дает время до автоматического исчезновения всплывающих подсказок (по умолчанию 5 секунд) или когда пользователь убирает мышь. Если вы хотите создать окно, похожее на всплывающую подсказку, которое остается открытым бесконечно, самый простой подход - использовать элемент управления Popup.

...