我想用指針同步兩個對象頭文件。 例如:我知道我不能與當前的語法做到這一點,但我想是這樣的:用C#中的指針同步兩個對象頭文件WPF
Node node = new Node();
node.Label = "header1";
TabItem tabItem = new TabItem;
*(tabItem.Header) = &(node.Label);
所以每當我改變node.Label
, tabItem.Header
也會發生變化。
我想用指針同步兩個對象頭文件。 例如:我知道我不能與當前的語法做到這一點,但我想是這樣的:用C#中的指針同步兩個對象頭文件WPF
Node node = new Node();
node.Label = "header1";
TabItem tabItem = new TabItem;
*(tabItem.Header) = &(node.Label);
所以每當我改變node.Label
, tabItem.Header
也會發生變化。
編輯:添加了一個例子
你應該能夠做到這一點使用數據綁定。如果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的值 - 標籤標題檢測到它並更新)。
您是否嘗試過創建一個新的綁定來綁定這兩個屬性?如果Node是您自己的對象,請實現INotifyPropertyChanged。您可以在代碼和XAML中執行此操作。既然你看起來像你在代碼中做的事情,這裏是一個鏈接如何做到這一點:http://learnwpf.com/Posts/Post.aspx?postId=a089e315-9440-4f74-b872-ba6d14be7c80
謝謝!這正是我需要的 – anon 2010-07-09 22:12:04