2016-04-01 2 views
2

Я относительно новичок в WPF, и я использую Stackpanel для отображения списка изображений. Этот список изображений является динамическим, поэтому элементы Stackpanel добавляются во время выполнения кода, а не непосредственно в XAML.Как настроить отдельные подсказки для каждого элемента StackPanel?

Мне было любопытно, как мне удавалось отображать отдельные подсказки для каждого изображения в Stackpanel. Я думал, что смогу сделать что-то следующим образом:

private void mainTaskBar_PreviewMouseMove(object sender, MouseEventArgs e) 
{ 
    foreach (Image img in imgList) 
     if (img == e.OriginalSource) 
      displayCorrespondingTooltip(img); 
} 

Но это кажется немного чрезмерным. Есть ли способ, которым вы могли бы просто получить список дочерних элементов в панели стека и просто установить каждую отдельную подсказку с помощью SetToolTip()? Я чувствую, что это будет намного более элегантно.

Спасибо!

+1

«Право» WPF способ сделать это будет иметь ObservableCollection ваших элементов, привязанных к свойству ItemsSource элемента ItemsControl, с ItemTemplate, который отображает ваше изображение, с помощью всплывающей подсказки и т. д. Не то, чтобы вы теперь переписывали все, что работает! Но это очень простой и мощный способ сделать что-то. –

ответ

1

Вы можете определить метод как следующий назначить подсказку для различных элементов управления:

public void displayCorrespondingTooltip<T>(T control, string tooltipText) 
    { 
     //For images 
     if (control.GetType() == typeof(Image)) 
     { 
      (control as Image).ToolTip = tooltipText; 
     } 
     //For Rectangles 
     if (control.GetType() == typeof(Rectangle)) 
     { 
      (control as Rectangle).ToolTip = tooltipText; 
     } 
    } 

И этот фургон назвать так:

displayCorrespondingTooltip<Image>(img, "This will be the image tooltip"); 
displayCorrespondingTooltip<Rectangle>(rectObject,"rectangle tooltip"); 
+0

Ох, я вижу. Поэтому я могу просто добавить подсказки и настройки, которые я хочу для каждого элемента управления, прежде чем добавлять его в стеке. Огромное спасибо :) –

Смежные вопросы