2015-07-08 3 views
0

Я пытаюсь добавить маршрутизируемое событие в существующую всплывающую подсказку в управление - теперь оно связано с простым свойством get/set.Событие с огранкой при изменении всплывающей подсказки

связывание в XAML:

<Style x:Key="Style" TargetType="{x:Type myControl}"> 
     <Setter Property="ToolTip" Value="{Binding Name}" /> 

опоры в MyControl:

public string Name 
    { 
     get; 
     set; 
    } 

маршрутизируемого событие в классе Control, который содержит список myControls (я полагаю, я написал ее в правильном направлении)

public static readonly RoutedEvent TooltipChangedEvent = EventManager.RegisterRoutedEvent("ToolTipChanged", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler<string>), typeof(Control)); 
    public event RoutedPropertyChangedEventHandler<string> ToolTipChanged 
    { 
     add 
     { 
      AddHandler(TooltipChangedEvent, value); 
     } 
     remove 
     { 
      RemoveHandler(TooltipChangedEvent, value); 
     } 
    } 

Вопрос в том, как запустить это событие при изменении всплывающей подсказки?

+0

В названии setter execute Event. – Maximus

+0

Не могли бы вы предоставить образец? Я новичок в событиях C#. Здесь два вопроса - Нужно ли мне внедрять INotifyPropertyChanged в классе myControl? (Это было не здесь), а во-вторых - как запустить это событие КАЖДЫЙ раз, когда текст всплывающей подсказки изменяется? – curiousity

+0

Изменения в подсказках Вы имеете в виду изменения свойств имени? – Maximus

ответ

1
class MainViewModel : FrameworkElement, INotifyPropertyChanged 
{ 
    private string _name; 

    public string Name 
    { 
     get { return _name; } 
     set 
     { 
      _name = value; 
      RaiseEvent(new RoutedEventArgs(TooltipChangedEvent)); 
      OnPropertyChanged(); 
     } 
    } 

    public static readonly RoutedEvent TooltipChangedEvent = EventManager.RegisterRoutedEvent("ToolTipChanged", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler<string>), typeof(Control)); 
    public event RoutedPropertyChangedEventHandler<string> ToolTipChanged 
    { 
     add 
     { 
      AddHandler(TooltipChangedEvent, value); 
     } 
     remove 
     { 
      RemoveHandler(TooltipChangedEvent, value); 
     } 
    } 

    public void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 
Смежные вопросы