我有一个带有SelectionChanged事件的TabControl。当选定的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的一个实现,但是我不知道我是否可以在这个场景中使用它以及如何使用它。
发布于 2016-04-05 21:31:14
您可以在ViewModel中跟踪您的更改。我做了类似的事情,从属性setter中标记了一个字段:
bool _hasChanged = false;
public string Name
{
get
{
return _name;
}
set
{
if (value != _name)
{
_name = value;
_hasChanged = true;
}
}
}然后,当选项卡更改时,检查_hasChanged字段的值
https://stackoverflow.com/questions/36427346
复制相似问题