Tôi đang đối mặt với một số vấn đề với ràng buộc WPF đối với thuộc tính tĩnh. Trong đơn đăng ký của tôi, có một lớp được gọi là Globals có chứa một thuộc tính tĩnh tĩnh tới ThisAddIn. Đối tượng này cho phép tôi truy cập thuộc tính User mà về cơ bản là những gì tôi muốn sử dụng trong Binding của tôi. Vì vậy, XAML của tôi trông như thế này:Giá trị StaticExtension không thể được giải quyết
<TextBlock Text="{Binding Path=User.Name
, Source={x:Static Member=s:Globals.ThisAddIn}}" />
Các namespace s được khai báo ở phía trên cùng của dòng sau:
xmlns:s="clr-namespace:ConsoleApplication16.Model"
Tôi tìm thấy một tấn các cách tiếp cận khác nhau về cách thức để tham khảo tĩnh bất động sản trong XAML, nhưng không ai trong số họ làm việc ngoại trừ này, mà cũng có vẻ hợp lý nhất đối với tôi. Một số mẫu tôi tìm thấy, không sử dụng Đường dẫn hoặc Thành viên. Sau khi một số thử nghiệm tôi đã tìm đúng cách để thực hiện việc này, đang sử dụng "x: Thành viên tĩnh" để xác định lớp và thuộc tính tĩnh bạn muốn sử dụng, trong khi Đường dẫn xác định Thuộc tính chính xác bên trong đối tượng này, giống như một bình thường ràng buộc sẽ làm.
Mặc dù giải pháp này biên dịch mà không có bất kỳ khiếu nại nào, XAMLParseException bật lên trực tiếp cho tôi biết rằng giá trị StaticExtension không thể được giải quyết cho một điều tra, trường tĩnh hoặc thuộc tính tĩnh.
Làm thế nào chính xác là 'way' đúng nếu nó ném một ngoại lệ? –
Ngoài ra bạn sẽ có thể thả 'Path =' và 'Member =' bởi vì điều đó sẽ gọi các contructors tương ứng thiết lập các thuộc tính liên quan. –
Tôi thường liên kết với các lớp/thuộc tính tĩnh bằng cách sử dụng '{Binding Source = {x: Static local: MyStaticClass.SomeStaticProperty.PropertyName}'. Chỉ cần chắc chắn rằng các thuộc tính của bạn có các trình đánh giá 'get' /' set'. Ví dụ, hãy chắc chắn bạn sử dụng 'public string PropertyName {get; bộ; } 'thay vì' publicName PropertyName; ' – Rachel