C# 为什么DataGridTextcolumn在ObservableCollection中找不到实际类的属性,但父类属性是?

C# 为什么DataGridTextcolumn在ObservableCollection中找不到实际类的属性,但父类属性是?,c#,wpf,xaml,mvvm,data-binding,C#,Wpf,Xaml,Mvvm,Data Binding,我得到: System.Windows.Data错误:40:BindingExpression路径错误:“状态” 在“对象”“PointNetObject”(HashCode=9270846)上找不到属性。 BindingExpression:Path=State;DataItem='PointNetObject' (HashCode=9270846);目标元素为“TextBlock”(名称=“”);目标 属性为“Text”(类型为“String”) 一列。所有行都添加到表中,但对于每一行,我都

我得到:

System.Windows.Data错误:40:BindingExpression路径错误:“状态” 在“对象”“PointNetObject”(HashCode=9270846)上找不到属性。 BindingExpression:Path=State;DataItem='PointNetObject' (HashCode=9270846);目标元素为“TextBlock”(名称=“”);目标 属性为“Text”(类型为“String”)

一列。所有行都添加到表中,但对于每一行,我都会得到错误。对于每一行,另外两列显示得很好。但不是国家。当然,永远不会调用转换器

设置如下所述

我有一个目标:

public class PointNetObject : NetObject
{
    SwitchObjectState State
    {
        get { return _state; }
        set { _state = value; }
    }
}
它继承具有诸如阶段和标签等属性的类

在ViewModel中:

public ObservableCollection<PointNetObject> SelectedSwitchItems { get; private set; }

public SelectedObjectsViewModel(SelectedObjects selectedObjects)
{
    SelectedSwitchItems = new ObservableCollection<PointNetObject>(GetSwitches());
}    


IEnumerable<PointNetObject> GetSwitches()
{
    foreach (var netObject in SelectedObjectsInstance.GetSelectedObjectItems(x => IsSwitch(x)))
    {
        yield return (PointNetObject) netObject;
    }
}
public observeCollection SelectedSwitchItems{get;private set;}
公共选定对象视图模型(选定对象选定对象)
{
SelectedSwitchItems=新的ObservableCollection(getSwitchs());
}    
IEnumerable getSwitchs()
{
foreach(SelectedObjectsInstance.GetSelectedObjectItems(x=>IsSwitch(x))中的var netObject)
{
收益返回(PointNetObject)netObject;
}
}
鉴于:

 <DataGrid Name="SelectedSwitchesGrid" CanUserAddRows="False" CanUserResizeColumns="True" CanUserSortColumns="True" IsReadOnly="True" 
                   ItemsSource="{Binding SelectedSwitchItems}"
           <DataGrid.Columns>
                    <DataGridTextColumn Header="{DynamicResource XpStrLabel}" Binding="{Binding Label}" />
                    <DataGridTextColumn Header="{DynamicResource XpStrPhase}" Binding="{Binding Phase}" />
                    <DataGridTextColumn  Header="{DynamicResource XpStrState}" Binding="{Binding State, Converter={StaticResource SwitchObjectStateToStringConverter}}" />
                </DataGrid.Columns>
  </DataGrid>
在您的模型中:

public class PointNetObject : NetObject
{
    SwitchObjectState State
    {
       get { return _state; }
       set { _state = value; }
    }
}
您的
状态
属性未声明为公共

从ViewModel绑定到视图的任何属性都必须是公共的,否则视图将无法看到它

别担心,我们都做过一次

在您的模型中:

public class PointNetObject : NetObject
{
    SwitchObjectState State
    {
       get { return _state; }
       set { _state = value; }
    }
}
您的
状态
属性未声明为公共

从ViewModel绑定到视图的任何属性都必须是公共的,否则视图将无法看到它


别担心,我们都做过一次

你的
SwitchObjectState属性不是
public
,这很重要。谢谢,我是idiot@Jonesopolis:是否愿意以asnwer的身份编写,以便我可以接受?您的
SwitchObjectState属性不是
public
,这非常重要。谢谢,我是一名医生idiot@Jonesopolis:是否愿意以匿名者的身份写作,这样我就可以接受?你可能想在回答中公开国有资产:/嗯,我刚才指出这是问题所在,也许现在更合理了。这很奇怪。通常,答案包含OP代码的固定版本,而不是描述错误原因的完全相同的代码。不管怎样,我已经提出了我不想要的意见,我告辞了。您好,先生。谢谢!通常我在UI中的类都是由我创建的。这个带有State的类很旧,而且属性getter privacy是错误的,尽管它已经使用了很多年。你可能想在回答中公开State属性:/嗯,我刚才指出这是问题所在,也许现在它变得更合理了。这很奇怪。通常,答案包含OP代码的固定版本,而不是描述错误原因的完全相同的代码。不管怎样,我已经提出了我不想要的意见,我告辞了。您好,先生。谢谢!通常我在UI中的类都是由我创建的。这个带有State的类很旧,getter privacy属性是错误的,尽管它已经使用多年了。