Lúc đầu, tôi muốn nói rằng mẫu dưới đây là quá đơn giản. Giả sử bạn đã kiểm soát WPF bị ràng buộc.INotifyPropertyChanged problem
<Window Title="Window1" Height="300" Width="300">
<Grid>
<StackPanel>
<TextBox Text="{Binding Name}" Margin="10"/>
<Button HorizontalAlignment="Center"
Content="Click Me" Margin="5"
Padding="2" Click="OnButtonClick" />
</StackPanel>
</Grid>
</Window>
Window được ràng buộc với lớp người mà thực hiện INotifyPropertyChanged
và có Tên setter ở dạng
public string Name
{
get { return _name; }
set
{
_name = "Some Name";
OnPropertyChanged("Name");
}
}
Tức là _name được gán "Some Name" bất cứ khi nào người dùng cố gắng thay đổi nó từ UI. Nhưng mẫu này không hoạt động. Tôi đã thay đổi tên trong TextBox thành một số giá trị nhấn tab buộc tiêu điểm để di chuyển đến nút và giá trị trong TextBox vẫn không thay đổi mặc dù sự kiện PropertyChanged đã được kích hoạt.
Bạn có thể giải thích tại sao điều đó xảy ra không? Theo tôi hiểu PropertyChanged
sự kiện lực lượng giao diện người dùng để đọc lại các giá trị từ các thuộc tính và hiển thị chúng nhưng trong giá trị ví dụ của tôi trong hộp văn bản dữ liệu không được cập nhật.
Một lần nữa. Tôi hiểu rằng đây là việc thực hiện kém tài sản và tôi muốn lặp lại rằng đây là sự đơn giản hóa. Nó chỉ là một mẫu. Nhưng dù sao, PropertyChanged tín hiệu rằng tài sản đã được thay đổi và nên được cập nhật nhưng nó không.
Err, tôi có thể sai, nhưng không nên nó được '{Binding Path = Tên}'? –
Không. Đối với các ràng buộc thuộc tính, bạn có thể thoát khỏi Đường dẫn dưới dạng lối tắt. –
Điều này là do Binding có một hàm khởi tạo lấy đường dẫn làm tham số. –