在C#WPF中使用指针同步两个对象头

在C#WPF中使用指针同步两个对象头,c#,wpf,pointers,C#,Wpf,Pointers,我想用指针同步两个对象头。 例如:我知道我无法使用当前语法执行此操作,但我希望类似于: Node节点=新节点() node.Label=“header1” TabItem TabItem=新的TabItem *(tabItem.Header)=&(node.Label) 因此,每当我更改节点.Label,选项卡项.Header也会更改。编辑:添加了一个示例 您应该能够使用数据绑定来实现这一点。如果节点是自定义对象,则需要支持INotifyPropertyChange,或将Label属性作为依赖项

我想用指针同步两个对象头。 例如:我知道我无法使用当前语法执行此操作,但我希望类似于:

Node节点=新节点()
node.Label=“header1”

TabItem TabItem=新的TabItem
*(tabItem.Header)=&(node.Label)

因此,每当我更改
节点.Label
选项卡项.Header
也会更改。

编辑:添加了一个示例

您应该能够使用数据绑定来实现这一点。如果节点是自定义对象,则需要支持INotifyPropertyChange,或将Label属性作为依赖项属性实现。(我不确定约定是什么,我猜如果节点本质上是一个UI对象,那么使用依赖属性,如果不是,那么实现INotifyPropertyChanged

例如: 节点对象:


    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中设置数据绑定):

表单的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将检测到您的节点对象实现了INotifyPropertyChanged,并将自动订阅PropertyChanged事件。

(注意,在主窗口代码中,我设置了绑定,然后设置了Node.Label的值——选项卡标题检测并更新它).

您是否尝试创建新的绑定来绑定这两个属性?如果节点是您自己的对象,请实现INotifyPropertyChanged。您可以在代码中以及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>