【问题标题】:Class loads contents in code but doesn't show on Screen in WPF类在代码中加载内容,但在 WPF 中的屏幕上不显示
【发布时间】: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


【解决方案1】:

我稍微改了一下。问题依旧,但后来我发现了一个简单的错误。

我的代码是:

public Station_ViewModel ViewModel;

但它必须是:

public Station_ViewModel ViewModel { get; set; }

如果您希望数据的值可用于数据绑定,您需要将数据放在属性中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多