2016-04-05 13 views
0

SelectionChanged olayına sahip bir TabControl sahibiz. Seçilen TabPage değiştiğinde, TabPage'da UIElements'un bir değeri değiştiyse, seçili TabPage için bildirim almak istiyorum. Bu kod ileTabItem UIElement OnPropertyChanged

private FrameworkElement CurrentFrameworkElement { get; set; } 

public TabEvents(DispatcherEvents dispatcherEvents) 
    : base(dispatcherEvents) 
{ 
    EventManager.RegisterClassHandler(typeof(System.Windows.Controls.TabControl), System.Windows.Controls.TabControl.SelectionChangedEvent, new SelectionChangedEventHandler(TabControl_SelectionChanged), true); 
} 

private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (e.Source is System.Windows.Controls.TabControl) 
    { 
     var ti = ((System.Windows.Controls.TabControl)e.Source).SelectedItem as TabItem; 
     CurrentFrameworkElement = e.Source as System.Windows.Controls.TabControl; 
    } 
} 

Ben şimdiki TabItem alabilirsiniz. Geçerli TabItem içindeki UIElement değerleri değişikliklerini nasıl tespit edebilirim? Örneğin, TextBox’a metin girme veya CheckBox’u değiştirme bir bildirim vermelidir.

GözlemlenebilirUIElementCollection here'un bir uygulamasını buldum, ancak bunu bu senaryo ve nasıl kullanabileceğimi bilmiyorum.

+0

senin Textboxes, onay kutuları değişiklikleri almak için Sonra

bool _hasChanged = false; public string Name { get { return _name; } set { if (value != _name) { _name = value; _hasChanged = true; } } } 

ve böylece var üzerinde Pencerenizdeki bir mülke metin özelliğini veya ischecked özelliğini bağlamak için, WPF'yi nasıl kullanacağınızı açıklayan birçok öğreticiyi bulabilirsiniz. –

+0

MVVM'yi kullanıyor musunuz? –

+0

@GlenThomas evet, View/ViewModel'e erişebiliyorum – Sybren

cevap

0

Değişikliklerinizi ViewModel'de izleyebilirsiniz. Ben özellik ayarlayıcıları bir alan işaretleyerek benzer bir şey yapmış: sekme değişiklikleri _hasChanged alanının değerini kontrol ederken

İlgili konular