TabItem UIElement OnPropertyChanged

时间:2016-04-05 13:09:52

标签: c# wpf

我有TabControlSelectionChanged事件。选定的TabPage更改后,如果TabPageUIElements之一的值发生更改,我希望收到选定TabPage的通知。

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的实现,但我不知道我是否可以在这种情况下使用它以及如何使用它。

1 个答案:

答案 0 :(得分:0)

您可以在ViewModel中跟踪您的更改。我通过标记属性设置器中的字段来做类似的事情:

bool _hasChanged = false;

public string Name
{
    get
    {
        return _name;
    }

    set
    {
        if (value != _name)
        {
            _name = value;
            _hasChanged = true;
        }
    }
}

然后当您的标签更改时,检查_hasChanged字段的值