【发布时间】:2013-09-13 19:13:27
【问题描述】:
我有一个名为 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 实例的内容(名称等属性):
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 实例的属性确实已加载,但在屏幕中显示为它们未加载(例如,名称仍为空字符串)。
奇怪的是,如果我创建一个只有一个 Station_View 类的窗口(不在 Stations_View 内),一切都会正常加载和显示。
每个相关的变量都被声明为 Public。
【问题讨论】:
-
是
Stations_ViewModel声明为Stations_View的数据上下文? -
是的,通过
return new Stations_View() { DataContext = new Stations_ViewModel(_host) };这一行 -
我想你正在寻找
ItemsControl。 -
这一行什么时候执行?请发布整个代码,否则很难找出您的问题...
-
@HighCore 是的..我虽然使用它,但是由于Station的数量是固定的并且很低(实际上是5,我在示例中简化为3),我决定不使用.. .但如果它不起作用,我会尝试。
标签: c# wpf visual-studio-2010 xaml mvvm