C# 从静态切换到viewmodel范例会导致属性从组合框中消失

C# 从静态切换到viewmodel范例会导致属性从组合框中消失,c#,wpf,xaml,mvvm,data-binding,C#,Wpf,Xaml,Mvvm,Data Binding,我相信对这种不良行为有一个非常合理的解释(我是最有可能的原因)。但由于无知,我不知道如何解决它。下面是发生的事情 当我像下面那样绑定到静态资源时,属性名会自动显示(它由重写的ToString实现提供begin服务) 然后,我尝试将代码重写为MVVM模式,因此我将其更改为 <ComboBox ItemsSource="{Binding AllOptions}"/> 尝试显式设置路径不起作用(没有任何更改,程序执行良好,但列表中没有显示任何内容。(提示是我做

我相信对这种不良行为有一个非常合理的解释(我是最有可能的原因)。但由于无知,我不知道如何解决它。下面是发生的事情

当我像下面那样绑定到静态资源时,属性名会自动显示(它由重写的ToString实现提供begin服务)


然后,我尝试将代码重写为MVVM模式,因此我将其更改为

<ComboBox ItemsSource="{Binding AllOptions}"/>

尝试显式设置路径不起作用(没有任何更改,程序执行良好,但列表中没有显示任何内容。(提示是我做错了什么,因为intellisense只建议AllOptions,而不是Name作为路径的替代项。)


因此,切换到视图模型会导致属性名的文本消失。我可以看到,在断开viewmodel的构造函数时,提供的元素数量(及其内容)是正确的,如下所示

class Presenter
{
  private IEnumerable<Stuff> _allOptions;
  public IEnumerable<Stuff> AllOptions 
    => _allOptions.Where(element => true);

  public Presenter()
  {
    _allOptions = DataAccessor.GetStuff();
  }
}
课堂演示者
{
私有IEnumerable _allOptions;
公共IEnumerable分配选项
=>\u allOptions.Where(element=>true);
公众演讲者()
{
_allOptions=DataAccessor.GetStuff();
}
}
我已将viewmodel连接到视图,如下所示

<Window.DataContext>
  <local:Presenter/>
</Window.DataContext>

我错过了什么

编辑 我刚刚意识到绑定到组件的列表是空的。绑定没有发生。我被折叠的组合框欺骗了,但是当我清空列表时,它似乎有一个默认的行数,与添加的元素数无关!所以,问题是我的绑定没有成功绑定


在中,我看到bloggers视图模型实现了BindableBase。根据intellisense,我没有这样的类。INotify…是一个对应的东西吗?

你删除了
静态
关键字吗?@ChrisEelmaa是的(我已经测试了两个版本)。没有更改…(我还更正了这个问题,因此你的评论可能看起来很奇怪。)您似乎对以下
“{Binding AllOptions}”中的
Binding.Path
…感到困惑
AllOptions
绑定的.Path
值…它是
AllOptions
属性的路径。您正在谈论的
名称路径与集合中的单个项目相关,您应该在属性中指定它…尝试以下操作:
。您的演示者必须实现INotifyPropertyChanged.@Sheridan感谢您的澄清。我对这一点感到困惑。遗憾的是,它仍然不起作用-我正在经历同样的错误行为。还有更多建议吗?
class Presenter
{
  private IEnumerable<Stuff> _allOptions;
  public IEnumerable<Stuff> AllOptions 
    => _allOptions.Where(element => true);

  public Presenter()
  {
    _allOptions = DataAccessor.GetStuff();
  }
}
<Window.DataContext>
  <local:Presenter/>
</Window.DataContext>