Tôi đã gặp một vấn đề thú vị mà tôi chưa tìm thấy lời giải thích nào ...Chế độ hiển thị thành viên của ViewModel là gì?
Với ứng dụng MVVM WPF rất đơn giản bên dưới, tại sao danh sách này chỉ được kết hợp với hộp tổ hợp ViewModel được đặt thành public
?
Thay đổi hiển thị TestList
thành internal
không gây ra lỗi hoặc cảnh báo lúc biên dịch nhưng để trống hộp tổ hợp tại thời gian chạy.
Trích dẫn the official documentation: internal
loại hoặc thành viên chỉ có thể truy cập trong các tệp trong cùng một cụm.
Và sự cố này xảy ra mặc dù thực tế là Chế độ xem và ViewModel được xác định trong cùng một hội đồng.
Sau đây là cách mã trông giống như:
mẫu:
class TestModel
{
internal List<string> Musketeers { get; private set; }
public TestModel()
{
Musketeers = new List<string> { "Athos", "Porthos", "Aramis" };
}
}
Xem:
<Window x:Class="TestWpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<ComboBox Width="250" Height="25" ItemsSource="{Binding TestList}" />
</Grid>
</Window>
ViewModel:
class TestViewModel : INotifyPropertyChanged
{
TestModel myModel = new TestModel();
public List<string> TestList
{
get
{
return myModel.Musketeers;
}
}
// INotifyPropertyChanged members are below ...
}
_Không phải là Chế độ xem và Chế độ xem trong cùng một cụm? _ Tôi không thể trả lời câu hỏi đó. Bạn đã xác định chúng ở đâu? –
@ChrisDunaway Rất tiếc, bạn đã đúng! Tôi đã cố định từ ngữ của mình bây giờ ... –