我有一个名为Station * s *的类(强调s),它有另一个名为Station的3个实例。
在Stations_View中我有:
<Grid VerticalAlignment="Stretch" Margin="0,0,0,0" DataContext="{Binding ViewModel_Station1}" Grid.Row="0">
<Views:Station_View Grid.Row="0"/>
</Grid>
<Grid VerticalAlignment="Stretch" Margin="0,0,0,0" DataContext="{Binding ViewModel_Station2}" Grid.Row="0">
<Views:Station_View Grid.Row="0"/>
</Grid>
<Grid VerticalAlignment="Stretch" Margin="0,0,0,0" DataContext="{Binding ViewModel_Station3}" Grid.Row="0">
<Views:Station_View Grid.Row="0"/>
</Grid>
在Stations_ViewModel上我构造了所有的Station实例,运行代码来加载所有Station实例的内容(如Name等属性):
ViewModel_Station1 = new Station_ViewModel(_host, 1);
ViewModel_Station2 = new Station_ViewModel(_host, 2);
ViewModel_Station3 = new Station_ViewModel(_host, 3);
NotifyPropertyChanged("ViewModel_Station1");
NotifyPropertyChanged("ViewModel_Station2");
NotifyPropertyChanged("ViewModel_Station3");
但是,即使代码运行并且确实加载了Station实例的属性,它也会在屏幕中显示,因为它们没有加载(例如,Name仍然是一个空字符串)。
奇怪的是,如果我创建一个仅包含一个Station_View类的窗口(不在Stations_View中),则所有内容都会被加载并正常显示。
每个相关变量都被声明为Public。
答案 0 :(得分:1)
我重新制定了一点。问题依然存在,但后来我发现了一个简单的错误。
我的代码是:
public Station_ViewModel ViewModel;
但必须是:
public Station_ViewModel ViewModel { get; set; }
如果您希望其值可用于数据绑定,则需要将数据放在属性中。