‫Chào mừng trở lại.
‫Trong video này, chúng ta sẽ nói về các thuộc tính phụ thuộc và chúng cực kỳ quan trọng ngay khi chúng ta
‫bắt đầu liên kết dữ liệu.
‫Và nhìn chung, việc hiểu cách thức hoạt động của chúng sẽ có ý nghĩa đối với bạn.
‫Vì vậy, hãy tiếp tục và tạo một nút trong lưới của chúng tôi.
‫Và chúng tôi chỉ đơn giản làm điều đó bằng cách tạo từ khóa nút như chúng tôi đã thấy nhiều lần.
‫Và ở đây tôi sẽ chỉ định chiều cao, giả sử là 100 pixel và chiều rộng là 200
‫pixel, sau đó là nội dung của Click Me.
‫Và bây giờ tôi muốn sử dụng một thứ gọi là nền.
‫Vì vậy, có một thuộc tính được gọi là nền và tôi muốn gán nó cho một hệ thống thoát nước cho chắc chắn.
‫Vì vậy, đó sẽ là nút của tôi.
‫Và như bạn có thể thấy bây giờ, nó chỉ có một màu cưa.
‫Có lẽ chúng ta nên làm cho nó có màu đỏ.
‫Được rồi, màu đỏ.
‫Nó khá mạnh.
‫Màu đỏ tím.
‫Trông tôt đây.
‫Vì vậy, một màu sắc đơn giản.
‫Vì vậy, ý tưởng đằng sau điều này là tôi muốn đi trước và giải thích cho bạn các thuộc tính phụ thuộc là gì, chúng
‫ở đâu và cách tạo các thuộc tính phụ thuộc của riêng bạn.
‫Và nó khá dễ dàng để làm điều đó với một nút, giả sử.
‫Nhân tiện, nút này và thực sự tôi sẽ đóng nó lại như vậy vì tôi muốn tạo kiểu cho nút đó.
‫Vì vậy, trong các thẻ nút, tôi muốn thêm một số kiểu khác vào nút đó và kiểu phải là một trình kích hoạt.
‫Vì vậy, tôi muốn kích hoạt.
‫Vì vậy, nếu tôi vào khu vực nút, thì tôi muốn thay đổi màu sắc hoặc một cái gì đó tương tự.
‫Vì vậy, tôi sẽ sử dụng kiểu nút chấm.
‫Bây giờ kiểu nút cần một kiểu ở đây để tôi có thể tạo kiểu của riêng mình ở đây và tôi sẽ đặt mục tiêu
‫cho kiểu đó.
‫Loại mục tiêu sẽ là nút.
‫Bây giờ điều đó là chưa đủ bởi vì những gì tôi muốn làm bây giờ là thêm một trình kích hoạt cho phong cách đó.
‫Vì vậy, tôi sẽ sử dụng trình kích hoạt kiểu.
‫Giống như cái này.
‫Và bây giờ tôi có thể tiếp tục và tạo các trình kích hoạt nhỏ xinh sẽ được kích hoạt khi một sự kiện xảy ra.
‫Và chúng tôi đã thấy các sự kiện rồi, nhưng đó là một sự kiện hơi khác.
‫Vì vậy, đó là một trình kích hoạt mà chúng ta có thể sử dụng như sau.
‫Chúng ta có thể tạo một trình kích hoạt tại đây và trình kích hoạt đó sẽ có một thuộc tính.
‫Và cái đó, ví dụ, là di chuột qua.
‫Vì vậy, khi con chuột ở trên nút đó, thì giá trị phải được đặt thành true.
‫Và trong bộ kích hoạt đó, tôi cần phải có bộ định vị sau đó.
‫Vậy điều gì sẽ xảy ra nếu đúng như vậy?
‫Vì vậy, những gì tôi sẽ làm là tôi sẽ đặt kích thước phông chữ thuộc tính thành giá trị 30 vì bây giờ kích thước phông chữ nhỏ hơn
‫rất nhiều.
‫Vì vậy, ở đây chúng ta có nút có chiều rộng cụ thể và nội dung và chiều rộng và tất cả những thứ
‫đó.
‫Và tôi đã làm cho nó phi công nhưng có màu đỏ tím nhạt.
‫Và sau đó tôi đã thêm một kiểu vào nút đó.
‫Và phong cách mà tôi đã thêm thực sự là một yếu tố kích hoạt.
‫Vì vậy, tôi có thể có một cái gì đó được gọi là trình kích hoạt kiểu sẽ
‫kích hoạt thay đổi kiểu và đó là trình kích hoạt được chạy khi con chuột ở trên nút đó và điều đó sẽ thiết lập mọi thứ.
‫Vì vậy, những gì nó sẽ làm là nó sẽ đặt kích thước phông chữ thành các giá trị mà chúng tôi đã chỉ định ở đây và bây giờ.
‫Ở đây chúng tôi chỉ định giá trị.
‫True có nghĩa là nó sẽ được kích hoạt khi điều này được di chuột qua là true.
‫Và điều đó đúng khi chúng ta di chuột qua hoặc khi di chuột qua nút.
‫Vì vậy, nếu chúng tôi chạy mà chúng tôi sẽ thấy một số thay đổi.
‫Và đây là một cách tiếp cận khá dài để chỉ có chức năng di chuột, nhưng chúng tôi muốn sử dụng
‫nhiều hơn ở đây.
‫Vì vậy, bạn thấy đó, tôi di chuột qua nó và màu sắc chuyển thành màu hơi xanh.
‫Và sau đó chúng tôi có văn bản này xuất hiện lớn hơn sau đó.
‫Vì vậy, giá trị thay đổi thành 30.
‫Vì vậy, đó là tuyệt vời và tất cả.
‫Nhưng tại sao chúng ta cần có đoạn mã dài này?
‫Vấn đề là chúng ta đang sử dụng các thuộc tính ở đây.
‫Như bạn thấy, thứ này được gọi là thuộc tính và thực ra chiều rộng là
‫thuộc tính, nội dung là thuộc tính, nền là thuộc tính và chúng phụ thuộc vào thuộc tính phụ thuộc hoặc chúng được
‫kết nối với thuộc tính phụ thuộc và chúng quan trọng đối với việc ràng buộc dữ liệu.
‫Như tôi đã nói, những gì chúng ta sẽ đề cập trong video tiếp theo hoặc một trong những video
‫tiếp theo, nhưng chúng cũng rất quan trọng để có sự kiện kích hoạt này hoặc nút nhận biết được điều gì đang xảy ra.
‫Vì vậy, hãy tiếp tục và tạo một nút bên trong phương thức cửa sổ chính của chúng ta.
‫Chỉ cần tạo một nút và bây giờ tôi muốn kiểm tra chính lớp đó.
‫Vì vậy, đi đến định nghĩa, do đó bạn có thể chỉ cần nhấn F 12 để đến định nghĩa.
‫Và điều này sẽ làm là nó sẽ hiển thị cho tôi lớp nút.
‫Và như bạn có thể thấy, đó là một lớp kế thừa từ dựa trên nút.
‫Có một thuộc tính phụ thuộc chỉ đọc tĩnh là thuộc tính mặc định bị hủy bỏ, thuộc tính là thuộc
‫tính mặc định.
‫Vì vậy, không quá nhiều.
‫Nhưng những gì bạn cũng có thể thấy là thực sự có một tài sản bình thường ở đây.
‫Vì vậy, đây là một thuộc tính lớp mà chúng ta có ở đây được gọi là mặc định bị hủy bỏ và
‫được đặt mặc định và những thuộc tính này được kết nối với các thuộc tính phụ thuộc đó.
‫Vì vậy, nó đại diện cho một thuộc tính có thể được thiết lập thông qua các phương thức như dữ liệu kiểu dáng, hoạt
‫ảnh ràng buộc và kế thừa.
‫Vì vậy, ràng buộc dữ liệu, như tôi đã nói, là thứ mà chúng ta sẽ đề cập ở phần sau.
‫Tạo kiểu, vậy là tốt.
‫Những gì chúng tôi vừa làm, chúng tôi đã tạo kiểu cho nút của mình và chúng tôi có thể sử dụng hoạt ảnh và tính kế thừa cho việc đó.
‫Nhưng bây giờ chúng ta hãy xem xét sâu hơn về đế nút để chúng ta biết rằng nút đó được kế thừa từ
‫đế nút.
‫Sau đó, chúng ta có thể đi đến định nghĩa của cơ sở nút và kiểm tra.
‫Được rồi.
‫Đó là một lớp kiểm soát nội dung.
‫Vì vậy, cơ sở nút được kế thừa từ kiểm soát nội dung, mà.
‫Chà, cơ sở nút có một sự kiện gốc, như bạn có thể thấy ở đây, một sự kiện nhấp chuột.
‫Và chúng ta đã thấy lần trước, tuy nhiên, sự kiện được bao gồm và nó cũng
‫có nhiều thuộc tính phụ thuộc, chẳng hạn như chế độ nhấp được nhấn, lệnh thuộc tính, mục tiêu, v.v.
‫Nhưng chúng tôi vẫn chưa chạm vào một số trong số đó.
‫Nhưng điều thú vị hơn nữa, nếu chúng ta đi sâu hơn vào phần kiểm soát nội dung, chúng ta có thể
‫thấy rằng có một thuộc tính cho biết có nội dung.
‫Vì vậy, cái này sẽ chăm sóc tất cả nội dung của nút.
‫Ví dụ, văn bản là một khối văn bản trong nút của chúng tôi.
‫Vì vậy, nếu chúng ta có nội dung trong nút của mình, thì.
‫Nó được xử lý bởi lớp này, vì vậy bởi lớp điều khiển nội dung này.
‫Và trên thực tế, chúng ta có thể đi sâu hơn nữa, đi đến định nghĩa, và ở đây chúng ta sẽ tìm thấy rất nhiều
‫thuộc tính phụ thuộc và hai sự kiện gốc.
‫Và lớp điều khiển này có các thuộc tính phụ thuộc được gọi là thuộc tính padding hơn là border brush.
‫Vì vậy, màu sắc của đường viền sau đó là căn chỉnh nội dung theo chiều dọc, liên kết nội dung theo chiều ngang.
‫Và bây giờ ở đây cái này thật thú vị đối với chúng tôi vì chúng tôi đã sử dụng nó.
‫Đó là thuộc tính nền và đó chính xác là thuộc tính mà chúng tôi đã đặt trong tệp XAML của mình.
‫Như bạn có thể thấy ở đây, chúng tôi đặt nền thành Pale Violet Red để chúng tôi có thể truy cập các thuộc tính phụ thuộc đó thông qua các
‫thuộc tính của chúng tôi tại đây.
‫Vì vậy, đây là các thuộc tính của chúng tôi như kích thước phông chữ, phông chữ, nền tảng gia đình, nền trước, tất cả những thứ
‫mà chúng tôi đang sử dụng khi chúng tôi làm việc với các điều khiển.
‫Và một nút, ví dụ, là một điều khiển hoặc một khối văn bản cũng là một điều khiển.
‫Vì vậy, tất cả chúng đều kế thừa từ lớp điều khiển này và tất cả chúng đều có các thuộc tính phụ thuộc này
‫sau đó sẽ kích hoạt và thông báo về các thay đổi tốt.
‫Vì vậy, ở đây chúng ta cũng thấy rằng có một cái gì đó quan trọng về các thuộc tính phụ thuộc và đó là chúng luôn ở
‫trạng thái tĩnh và chúng chỉ được đọc.
‫Vì vậy, điều này là rất quan trọng.
‫Ngoài ra, những gì bạn có thể thấy là chúng luôn kết thúc bằng tên thuộc tính.
‫Vì vậy, ở đây bất cứ khi nào chúng ta xác định một thuộc tính phụ thuộc, chúng ta nói background, nó giống tên của
‫chính thuộc tính đó.
‫Vì vậy, ở đây ví dụ, nó là nền tảng của họ, nhưng sau đó cũng là tài sản thuật ngữ ở cuối.
‫Câu chuyện rất dài và chúng tôi đi rất sâu, nhưng điều đó sẽ cho bạn thấy rõ hơn một chút các thuộc tính phụ thuộc đó là gì và những
‫gì chúng tôi đang làm việc với tất cả thời gian.
‫Vì vậy, chúng tôi đang chơi xung quanh với các thuộc tính, nhưng chúng thực sự hoạt động xung quanh các thuộc tính phụ thuộc.
‫Tại sao chúng ta cần tất cả những điều này?
‫Vâng, chỉ để hiểu những gì đang xảy ra ở đây với trình kích hoạt này, WPF đang sử dụng thuộc tính phụ thuộc ở
‫đây.
‫Vì vậy, ví dụ, điều này là di chuột qua và di chuột qua cung cấp một thông báo chuỗi tới WPF với sự trợ
‫giúp của các thuộc tính phụ thuộc và điều đó cho phép chúng tôi đặt giá trị thành true.
‫Và sau đó cũng nếu bạn kiểm tra nó, bởi vì đó là một cái gì đó mà tôi chưa chạm vào.
‫Trên thực tế, đã có lỗi xây dựng, vì vậy chúng tôi cần loại bỏ nút này tại đây.
‫Nhưng những gì tôi chưa đề cập hoặc chưa đề cập đến, điều khá quan trọng, là những điều sau đây.
‫Vì vậy, bạn có thể thấy chúng tôi có trình kích hoạt này và nó cho biết thuộc tính là mouse mouse over value.
‫ĐÚNG VẬY.
‫Và nó sẽ kích hoạt khi điều này là đúng, nó sẽ làm gì?
‫Vâng, nó sẽ đặt các thuộc tính như kích thước phông chữ thành 30.
‫Và để tôi chỉ cho bạn một lần nữa.
‫Hãy xem, hãy xem.
‫Nhưng bây giờ nếu tôi rời khỏi nút, bạn có thể thấy, này, nó đang thay đổi trở lại và điều đó được thực hiện bởi thuộc tính phụ
‫thuộc này.
‫Vì vậy, nó thông báo về những gì đang diễn ra và nó đang bán, đặt giá trị của kích thước phông chữ trở lại
‫giá trị ban đầu.
‫Vì vậy, như bạn có thể thấy, nó chỉ đúng khi con chuột kết thúc và điều đó có thể xảy ra thông qua các thuộc tính phụ thuộc.
‫Bây giờ là một điều khác về các thuộc tính phụ thuộc, bởi vì tôi đã nói chúng phải luôn ở trạng thái tĩnh và
‫chỉ đọc, và đó là vì tất cả các điều khiển nên được chia sẻ và có sẵn.
‫Vì vậy, bạn không muốn điều khiển chỉ khả dụng một lần.
‫Bạn cũng muốn nó có sẵn cho các lớp khác và các chế độ xem khác, v.v.
‫Và nó tĩnh vì giá trị không được thay đổi sau khi khởi tạo.
‫Và chuỗi thông báo này rằng kích hoạt thuộc tính phụ thuộc là bắt buộc để khai thác dữ liệu, cho hoạt ảnh, cho các trình
‫kích hoạt như chúng ta đã thấy ở đây, để tạo kiểu, v.v.
‫Bây giờ nếu bạn muốn tiếp tục và tạo thuộc tính phụ thuộc của riêng mình, bạn có thể làm theo cách sau.
‫Vì vậy, tôi sẽ tạo một thuộc tính mới trong lớp này ở đây.
‫Tôi sẽ gọi nó thực sự.
‫Hãy đặt nó ở đầu.
‫Tôi sẽ gọi nó là public int tài sản của tôi.
‫Và như tôi đã nói, đây là thuộc tính c LR và ở đây tôi sẽ cần phải có một bộ lấy và một bộ, nhưng điều đó sẽ không
‫đủ.
‫Tôi sẽ điều chỉnh chúng trong giây lát.
‫Hãy tạo một thuộc tính phụ thuộc cho thuộc tính đó của tôi.
‫Vì vậy, tôi sẽ tạo một thuộc
‫tính phụ thuộc chỉ đọc tĩnh công khai được gọi là thuộc tính phụ thuộc của tôi, thuộc tính phụ thuộc và thuộc tính đó sẽ được khởi tạo ngay
‫lập tức với thanh ghi dấu chấm thuộc tính phụ thuộc.
‫Vì vậy, chúng tôi đang đăng ký một thuộc tính phụ thuộc mới và chúng tôi cần chỉ định nhiều thứ.
‫Ví dụ, chúng ta cần có một tên chuỗi và tôi sẽ gọi nó.
‫Thuộc tính của tôi, sau đó chúng tôi cần loại tài sản.
‫Vậy tài sản này nên thuộc loại nào?
‫Và như chúng ta đã thấy ở đây, thuộc tính là tài sản của tôi là kiểu int.
‫Vì vậy, tôi sẽ sử dụng loại kiểu int.
‫Tiếp theo, chúng ta cần nhập chủ sở hữu tài sản.
‫Vì vậy, chủ sở hữu của loại và chủ sở hữu của loại thuộc tính này là lớp cửa sổ chính của tôi vì nó
‫nằm trong lớp không có chính.
‫Vì vậy, chúng tôi chỉ đơn giản nói rằng type of sẽ là cửa sổ chính và bây giờ chúng tôi cũng cần chuyển giao siêu dữ liệu thuộc tính.
‫Vì vậy, tôi sẽ tạo một siêu dữ liệu thuộc tính mới, siêu dữ liệu này sẽ bằng 0.
‫Vì vậy, tôi sẽ chỉ nhập số không ở đây, không có gì quá lạ mắt ở đó và thế là xong.
‫Vì vậy, đó là cách chúng ta có thể tạo một thuộc tính phụ thuộc.
‫Và bây giờ bản thân tài sản của tôi cũng nên bị ảnh hưởng bởi thuộc tính phụ thuộc này.
‫Và để làm được điều đó, tôi cần phải tiếp tục và điều chỉnh get và set để getter nên trả
‫về giá trị get thuộc tính phụ thuộc của tôi.
‫Nhưng bây giờ chúng ta gặp vấn đề này rằng giá trị của thuộc tính phụ thuộc là thuộc tính kiểu
‫phụ thuộc và mặc dù chúng ta đặt nó là kiểu int, chúng ta vẫn cần truyền giá trị đó vào trong đó.
‫Vì vậy, tôi sẽ ép nó thành một số nguyên và bây giờ chúng ta có thể tiếp tục và thực sự đóng quá trình này lại, đóng
‫câu lệnh, nói hay hơn, và bây giờ setter sẽ được đặt giá trị.
‫Và ở đây tôi đặt thuộc tính phụ thuộc của mình thành giá trị đã cho.
‫Vì vậy, đó là những gì chúng tôi đang làm ở đây và đó là cách bạn có thể tạo thuộc tính phụ thuộc của riêng mình.
‫Vì vậy, đây là những gì quan trọng chỉ đọc tĩnh.
‫Bạn cần tạo nó dưới dạng một loại thuộc tính phụ thuộc.
‫Bạn có thể đặt tên cho nó, sau đó bạn cần phải đăng ký nó và bạn cần phải cung cấp cho nó một cái tên, một loại hình, và chủ sở
‫hữu ở đâu hoặc chủ sở hữu là gì.
‫Vì vậy, lớp mà thuộc tính được tạo và sau đó bạn cần phải chuyển giao một số siêu dữ liệu thuộc tính để bạn
‫có thể thêm một số siêu dữ liệu bổ sung về thuộc tính.
‫Như bạn có thể thấy, có bốn mức quá tải khác nhau và bạn có thể chuyển một đối tượng là giá
‫trị mặc định.
‫Và tôi chỉ nói, được rồi, giá trị mặc định bằng không.
‫Vì vậy, thuộc tính của tôi sẽ mặc định bằng 0 vì siêu dữ liệu thuộc tính của tôi mà tôi đã thiết lập ở đây.
‫Được rồi.
‫Rất nhiều thứ ở đây.
‫Và tùy thuộc vào những gì bạn sẽ phát triển, bạn có thể không bao giờ tạo các thuộc tính phụ thuộc của riêng mình.
‫Vì vậy, đừng lo lắng nếu một lúc nào đó bạn cần sử dụng các thuộc tính phụ thuộc, thì chỉ cần kiểm tra cách tạo các thuộc tính
‫của riêng bạn.
‫Nếu không, bạn có thể chỉ cần sử dụng các thuộc tính mà chúng tôi đã có ở đây và cho người dùng cuối, hoặc giả sử đối với
‫một nhà phát triển chỉ xây dựng giao diện người dùng và giao diện người dùng sẽ không liên quan.
‫Nhưng tôi chỉ muốn cho bạn thấy mọi thứ được xây dựng như thế nào và điều gì quan trọng ở đây.
‫Được rồi.
‫Vậy hẹn gặp lại các bạn trong video tiếp theo.