Nó InitializeComponent()
làm gì và nó hoạt động như thế nào trong WPF?
Nói chung, nhưng tôi đặc biệt muốn biết các chi tiết cơ bản về trật tự xây dựng, và điều gì xảy ra khi có Thuộc tính đính kèm.
Nó InitializeComponent()
làm gì và nó hoạt động như thế nào trong WPF?
Nói chung, nhưng tôi đặc biệt muốn biết các chi tiết cơ bản về trật tự xây dựng, và điều gì xảy ra khi có Thuộc tính đính kèm.
Câu trả lời:
Cuộc gọi đến InitializeComponent()
(thường được gọi trong hàm tạo mặc định của ít nhất Window
và UserControl
) thực sự là một cuộc gọi phương thức đến lớp một phần của điều khiển (chứ không phải là gọi lên hệ thống phân cấp đối tượng như tôi dự kiến trước tiên).
Phương thức này định vị một URI cho XAML cho Window
/ UserControl
đang tải và chuyển nó sang System.Windows.Application.LoadComponent()
phương thức tĩnh. LoadComponent()
tải tệp XAML được đặt ở vị trí được truyền trong URI và chuyển đổi nó thành một thể hiện của đối tượng được chỉ định bởi phần tử gốc của tệp XAML.
Chi tiết hơn, LoadComponent
tạo một thể hiện của XamlParser
và xây dựng một cây XAML. Mỗi nút được phân tích cú pháp bởi XamlParser.ProcessXamlNode()
. Điều này được truyền cho BamlRecordWriter
lớp. Một thời gian sau, tôi có một chút lạc lõng về cách BAML được chuyển đổi thành các đối tượng, nhưng điều này có thể đủ để giúp bạn trên con đường dẫn đến giác ngộ.
Lưu ý: Thật thú vị, đây InitializeComponent
là một phương thức trên System.Windows.Markup.IComponentConnector
giao diện, trong đó Window
/ UserControl
hiện thực trong lớp được tạo một phần.
Hi vọng điêu nay co ich!
Nhìn vào mã luôn giúp quá. Đó là, bạn thực sự có thể xem lớp một phần được tạo (gọi LoadComponent ) bằng cách thực hiện như sau:
Các YourClass .g.cs ... là mã cho lớp một phần tạo ra. Một lần nữa, nếu bạn mở nó lên, bạn có thể thấy phương thức InitializeComponent và cách nó gọi LoadComponent ... và nhiều hơn nữa.