C# 为什么DataGridTextcolumn在ObservableCollection中找不到实际类的属性,但父类属性是?
我得到: System.Windows.Data错误:40:BindingExpression路径错误:“状态” 在“对象”“PointNetObject”(HashCode=9270846)上找不到属性。 BindingExpression:Path=State;DataItem='PointNetObject' (HashCode=9270846);目标元素为“TextBlock”(名称=“”);目标 属性为“Text”(类型为“String”) 一列。所有行都添加到表中,但对于每一行,我都会得到错误。对于每一行,另外两列显示得很好。但不是国家。当然,永远不会调用转换器 设置如下所述 我有一个目标: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”) 一列。所有行都添加到表中,但对于每一行,我都
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属性是错误的,尽管它已经使用多年了。