WPF綁定 mode Using System.ComponentModel; IPropertyChanged, if(this.PropertyChanged!=null){ this.PropertyChanged.Invoke(this,new PropertyChangedEventArgs("Name"))


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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM