Tôi biết tôi đang làm điều gì sai ở đây nhưng cái gì. Vui lòng xem và chỉ ra lỗi của tôi.INotifyPropertyChanged.PropertyChanged luôn là NULL
Tôi sẽ thấy "Peter" trong hộp văn bản của tôi nhưng không có "Jack" sau khi nhấp vào nút.
Lớp học của tôi
namespace App
{
class Person : INotifyPropertyChanged
{
private string name;
public String Name
{
get { return name; }
set { name = value; OnPropertyChanged("Name"); }
}
public Person()
{
Name = "Peter";
}
public void SetName(string newname)
{
Name = newname;
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string prop)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
}
}
XAML My
<Window x:Class="test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:app="clr-namespace:App"
Title="MainWindow" Height="400" Width="400">
<Grid>
<Grid.Resources>
<app:Person x:Key="person"/>
</Grid.Resources>
<TextBox Width="100" Height="26" Text="{Binding Source={StaticResource person}, Path=Name, Mode=TwoWay}" />
<Button Content="Button" Height="23" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>
Và codebehind tôi
public partial class MainWindow : Window
{
Person person;
public MainWindow()
{
InitializeComponent();
person = new Person();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
person.SetName("Jack");
}
}
Cảm ơn.
Có hai Person (s). TextBox được liên kết với Person từ các tài nguyên của Grid, trong khi Button thiết lập Name of Person từ trường private. Tôi nghĩ bạn nên sử dụng một Person như DataContext của Window. Điều này sẽ làm rõ mã của bạn và đánh dấu. –
Bạn có thể muốn đọc [this] (http://msdn.microsoft.com/en-us/library/ms752347.aspx) & [this] (http://msdn.microsoft.com/en-us/library /ms750613.aspx), vì bạn có một số nhầm lẫn trong các ràng buộc và tài nguyên của bạn. –