Tôi sử dụng rất nhiều ràng buộc trong XAML và đôi khi tôi sử dụng đường dẫn = trong một ràng buộc và đôi khi không. Trong trường hợp nào tôi cần đường dẫn = và khi nào tôi có thể bỏ qua điều này?Việc sử dụng Path = trong XAML là gì?
Trả lời
Nó luôn có thể được bỏ qua vì đó là thuộc tính mặc định của phần mở rộng XAML ràng buộc. Nó chỉ được chỉ định rõ ràng cho rõ ràng khi nhiều thuộc tính được sử dụng.
Cảm ơn ... trong trường hợp đó, tôi sẽ xóa từ khóa (ít nhất nếu đánh dấu cú pháp vẫn tốt như trong một nhận xét khác). (Tôi có thể chấp nhận nó trong một vài phút). –
Không có bất cứ điều gì như là một tài sản mặc định khi nói đến phần mở rộng đánh dấu, để nói như vậy là quá mơ hồ như chúng ta đang đối phó với các nhà thầu ở đây. Và nó [không phải lúc nào cũng bị bỏ qua] (http://stackoverflow.com/a/9383001/546730). –
Bạn luôn có thể bỏ qua đường dẫn = khi bạn viết đường dẫn đến thuộc tính ngay phía sau câu lệnh Binding.
{Binding MyProperty}
cũng giống như
{Binding Path=MyProperty}
Khi bạn nội tuyến đường dẫn đến tài sản mà bạn cần phải xác định nó với Path =
{Binding FallbackValue='HelloWorld', Path=MyProperty}
Giống như Richard Szalay nói, nó là không bắt buộc nếu nó là tài sản đầu tiên. Nhưng trong opionion của tôi, nó dễ đọc hơn nếu bạn nhập thuộc tính path. Ngoài ra mã nổi bật sẽ tốt hơn.
Điều này là do thực tế là lớp Ràng buộc có hàm tạo mặc định, được sử dụng khi bạn có các liên kết như {Binding FallbackValue='HelloWorld', Path=MyProperty}
và một hàm tạo có một đường dẫn đối số duy nhất.
Vì vậy, khi có một danh sách các cặp thuộc tính/giá trị ràng buộc được tạo ra như
new Binding(){
Path="MyProperty"
ElementName="MyElement"
}
Dạng thứ hai được sử dụng cho các ràng buộc như {Binding MyProperty, ...}
. Trong trường hợp này, ràng buộc được tạo ra là
new Binding("MyProperty"){
ElementName = "MyElement",
...
}
Luôn luôn đúng (và có thể chính xác hơn) để chỉ định đường dẫn =, nhưng bạn có thể thoát ra mà không có nó.
Đường dẫn được sử dụng để chỉ định tên thuộc tính của đối tượng bên dưới để liên kết.
Khi bạn liên kết với DataContext, bạn có thể bỏ Đường dẫn:
{Binding MyProperty}
{Binding Path=MyProperty}
Khi bạn cần phải xác định một nguồn khác với DataContext bạn có thể sử dụng Source
, RelativeSource
, hoặc ElementName
để tham khảo các đối tượng, vì vậy bạn thường sẽ phải chỉ định thuộc tính nào bạn muốn đặt ràng buộc của mình:
<Button Background="{Binding ElementName=refButton, Path=Background}"/>
<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>
Related: [Sự khác biệt giữa {Binding PropertyName} và {Binding Path = PropertyName}] (http://stackoverflow.com/ câu hỏi/4306657/sự khác biệt giữa binding-propertyname-and-binding-path-propertyname) –