我有TabControl
个SelectionChanged
事件。选定的TabPage
更改后,如果TabPage
上UIElements
之一的值发生更改,我希望收到选定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的实现,但我不知道我是否可以在这种情况下使用它以及如何使用它。
答案 0 :(得分:0)
您可以在ViewModel中跟踪您的更改。我通过标记属性设置器中的字段来做类似的事情:
bool _hasChanged = false;
public string Name
{
get
{
return _name;
}
set
{
if (value != _name)
{
_name = value;
_hasChanged = true;
}
}
}
然后当您的标签更改时,检查_hasChanged字段的值