Mode,它的類型為BindingMode的枚舉類型,可以取TwoWay、OneWay、OnTime、OneWayToSource、Default。
oneWay:使用 OneWay 綁定時,每當源發生變化,數據就會從源流向目標。
OneTime: 綁定也會將數據從源發送到目標;但是,僅當啟動了應用程序或 DataContext 發生更改時才會如此操作,因此,它不會偵聽源中的更改通知。
OneWayToSource: 綁定會將數據從目標發送到源。
TwoWay: 綁定會將源數據發送到目標,但如果目標屬性的值發生變化,則會將它們發回給源。
Default: binding的模式根據實際情況來定,如果是可編輯的就是TwoWay,只讀的就是OneWay.
<StackPanel>
<TextBox x:Name="tb1" Text="{Binding Path=Value,ElementName=slider1,Mode=TwoWay}"/>
<Slider x:Name="slider1" Maximum="10000000" Minimum="0" Margin="5" Value="{Binding Path=Text,ElementName=tb1,Mode=TwoWay}"/>
</StackPanel>
<StackPanel x:Name="stackPanel">
<TextBox x:Name="txtName" Text="{Binding Path=Name}"/>
<TextBox x:Name="txtName2" Text="{Binding Path=Id}"/>
<Button Click="Button_Click" Height="50" Content="Click here"/>
</StackPanel>
using System.ComponentModel;
Company mCompany;
public MainWindow()
{
InitializeComponent();
mCompany = new Company { Name = "Microsoft",Id=1 };
this.stackPanel.DataContext = mCompany;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Name:"+this.mCompany.Name+","+"Id:"+this.mCompany.Id);
mCompany.Name = "Google";
mCompany.Id = 111;
}
public class Company:INotifyPropertyChanged
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
if(this.PropertyChanged!=null)
{
this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));
}
}
}
private int id;
public int Id
{
get
{
return id;
}
set
{
id = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Id"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}