Henüz bir açıklama bulamadığım ilginç bir soruna rastladım ...ViewModel üyelerinin görünürlüğü ne olmalıdır?
Aşağıdaki çok basit MVVM WPF uygulaması verildiğinde, liste açılan pencereye yalnızca görünürlüğü bağlıysa ViewModel public
olarak ayarlandı mı?
internal
için TestList
görünürlüğünü değiştirmek, derleme zamanında bir hata veya uyarı ortaya çıkarmaz, ancak çalışma zamanında açılır kutuyu boş bırakır.
the official documentation'dan alıntı: internal
türleri veya üyelerine yalnızca aynı derlemedeki dosyalar içinde erişilebilir.
Ve bu sorun, Görünüm ve ViewModel'in aynı derlemede tanımlanmış olmasına rağmen gerçekleşiyor. İşte
kodu nasıl gözüktüğü:
Modeli:
class TestModel
{
internal List<string> Musketeers { get; private set; }
public TestModel()
{
Musketeers = new List<string> { "Athos", "Porthos", "Aramis" };
}
}
Görünüm:
<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:
erişimliclass TestViewModel : INotifyPropertyChanged
{
TestModel myModel = new TestModel();
public List<string> TestList
{
get
{
return myModel.Musketeers;
}
}
// INotifyPropertyChanged members are below ...
}
_Bu görünüm ve ViewModel aynı mecliste değil mi? _ Bunu cevaplayamıyorum. Onları tanımladığınız yer neresidir? –
@ChrisDunaway Oops, haklısınız! Şimdi benim ifademi düzelttim ... –