Tôi đang thử một số thứ khác nhau bằng cách sử dụng MVVM. Trong các thuộc tính ViewModel của chúng tôi được liên kết với Chế độ xem là công khai. Tôi lấy ví dụ về một nút ràng buộc. Đây là một mẫu đơn giản.Làm cho tài sản ràng buộc nội bộ thay vì công khai trong ViewModel
View.xaml:
<Button Content="Test Button" Command="{Binding TestButtonCommand}" />
ViewModel.cs
private ICommand _testButtonCommand;
public ICommand TestButtonCommand
{
get { return _testButtonCommand?? (_testButtonCommand= new RelayCommand(SomeMethod)); }
}
Ở đây câu hỏi của tôi là chúng ta có thể làm cho TestButtonCommand
nội bộ thay vì công cộng? Nội bộ có nghĩa là nó có thể truy cập vào dự án hiện tại để họ không phải là bất kỳ vấn đề làm điều đó? Nhưng khi tôi cố gắng làm điều đó thì nó không hiệu quả. Thêm một breakpoint trong getter không được nhấn. Vậy tại sao chúng ta không thể làm cho nó bên trong.
Đây là liên kết từ msdn.
http://msdn.microsoft.com/en-us/library/ms743643.aspx
Các thuộc tính bạn sử dụng thuộc tính nguồn như bắt buộc đối với một ràng buộc phải tài sản công cộng của lớp học của bạn. Các thuộc tính giao diện được xác định rõ ràng không thể được truy cập cho các mục đích ràng buộc, cũng như các thuộc tính được bảo vệ, riêng tư, nội bộ hoặc ảo không có triển khai cơ sở.
Tại sao chúng tôi không thể thực hiện việc này? Trong trường hợp truy cập nội bộ giống như công chúng nếu làm việc trong cùng một dự án. Vậy tại sao chúng ta không thể sử dụng nội bộ ở đây. Phải có một lý do mà chúng nên được công khai, và tôi đang tìm kiếm lý do đó.
internal ICommand TestButtonCommand { ...... }
Vì [bạn chỉ có thể liên kết với các thuộc tính công khai, các thuộc tính con và các bộ chỉ mục hoặc bất kỳ đối tượng CLR nào] (http://msdn.microsoft.com/en-us/library/ms743643.aspx). Tại sao nhóm WPF đã đi với quyết định thiết kế như vậy? Tôi không biết, bạn nên hỏi họ :) –
Microsoft của nó, vì vậy chúng tôi không thể làm bất cứ điều gì, –