Daha fazla
- Cinsiyet
- Erkek
- Meslek
- König
Merhaba. WPF öğreniyorum. DataBinding kısmında biraz kafam karıştı. Anladığım kadarıyla ModelView sınıfını INotifyPropertyChanged interface inden türetmem ve bu interface ile gelen eventi property set kısmında çalıştırmam gerekiyor. Ama burayı pek kafama oturtamadım. Tam olarak bu evente ne zaman nerde değeri atanıyor? PropertyChangedEventArgs ın parametreleri neye göre veriliyor? Genel olarak DataBinding in işleyişini anlatabilirseniz sevinirim.
C#:
//Binding yaptığımız sınıf
public class Person : INotifyPropertyChanged
{
private int _Age;
private string _Name;
public int Age
{
get { return _Age; }
set
{
_Age = value;
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Age"));
}
}
}
public string Name
{
get { return _Name; }
set
{
if (_Name != value)
{
_Name = value;
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));
}
}
}
}
public event PropertyChangedEventHandler? PropertyChanged;
}
//MainWindow
public partial class MainWindow : Window
{
public Person person = new Person()
{
Age = 30,
Name = "Hacı Veli"
};
public MainWindow()
{
InitializeComponent();
this.DataContext = person;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show($"{person.Name} + {person.Age}");
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
person.Age = 40;
person.Name = "Mehmet Yılmaz";
}
}
XML:
<TextBox Name="txt_target" HorizontalAlignment="Left" Margin="369,104,0,0" TextWrapping="Wrap" Text="{Binding Path=Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="120"/>
<!--XAML da Binding yaptığım yer. -->