Редактировать: добавлен пример
Вы должны быть в состоянии сделать это, используя привязку данных. Если Node - это пользовательский объект, вы можете либо поддержать INotifyPropertyChange, либо реализовать свойство Label как свойство зависимости. (Я не уверен, что такое соглашение, я бы предположил, что если Node по сути своей является объектом пользовательского интерфейса, тогда используйте свойство зависимости, а если нет, то реализуйте INotifyPropertyChanged.
Пример:
Объект Node:
public class Node: System.ComponentModel.INotifyPropertyChanged
{
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
public string Label
{
get { return this._Label; }
set
{
this._Label = value;
this.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("Label"));
}
}
private string _Label;
protected virtual void OnPropertyChanged(System.ComponentModel.PropertyChangedEventArgs propertyChangedEventArgs)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if (propertyChanged != null)
propertyChanged(this, propertyChangedEventArgs);
}
}
Код вашей формы (этот метод устанавливает привязку данных в коде, вы также можете настроить привязку данных в XAML):
public partial class MainWindow : Window
{
public Node TheNode { get; set; }
public MainWindow()
{
InitializeComponent();
this.TheNode = new Node();
this.DataContext = this;
this.Tab1.SetBinding(System.Windows.Controls.TabItem.HeaderProperty, "TheNode.Label");
this.TheNode.Label = "Test";
}
}
XAML для вашей формы
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TabControl>
<TabItem Name="Tab1"/>
</TabControl>
</Grid>
Когда вы привязываете данные, WPF обнаружит, что ваш объект Node реализует INotifyPropertyChanged, и автоматически подпишется на событие PropertyChanged.
(обратите внимание, что в коде MainWindow я устанавливаю привязку, а затем устанавливаю значение Node.Label - заголовок вкладки обнаруживает его и обновляет).