2016-04-05 10 views
0

TabControlにはSelectionChangedイベントがあります。選択したTabPageが変更された場合、TabPageUIElementsのいずれかの値が変更された場合、選択したTabPageの通知を受け取りたいと思います。TabItem 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; 
    } 
} 

このコードでは、現在のTabItemを得ることができます。現在のTabItemのUIElement値の変化を検出するにはどうすればよいですか?たとえば、テキストをTextBoxに入力するか、CheckBoxを切り替えると、通知が送られます。

ObservableUIElementCollection hereの実装が見つかりましたが、このシナリオでどのように使用できるかわかりません。

+0

があなたのテキストボックス、チェックボックスで変更を取得するには次に

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

をので、あなたが持っている上テキストプロパティまたはischeckedプロパティをウィンドウ内のプロパティにバインドする方法を説明するWPFの使い方に関するチュートリアルをオンラインで見つけることができます –

+0

MVVMを使用していますか? –

+0

@GlenThomasはい、私はView/ViewModelにアクセスします – Sybren

答えて

0

ViewModelで変更を追跡できます。私は、プロパティのセッターからのフィールドマークすることにより、類似した何かを行っている:あなたのタブの変更が_hasChangedフィールドの値をチェックするとき

関連する問題