2010-07-09 55 views
1

我想用指針同步兩個對象頭文件。 例如:我知道我不能與當前的語法做到這一點,但我想是這樣的:用C#中的指針同步兩個對象頭文件WPF

Node node = new Node();
node.Label = "header1";

TabItem tabItem = new TabItem;
*(tabItem.Header) = &(node.Label);

所以每當我改變node.LabeltabItem.Header也會發生變化。

回答

2

編輯:添加了一個例子

你應該能夠做到這一點使用數據綁定。如果Node是一個自定義對象,則需要支持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):

 

    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的值 - 標籤標題檢測到它並更新)。

+0

謝謝!這正是我需要的 – anon 2010-07-09 22:12:04