【发布时间】:2017-06-01 10:06:38
【问题描述】:
我有一个可以包含项目列表的“Person”类。
Person.cs
public class Person : ObservableObject
{
private string _id;
public string Id
{
get { return _id; }
set
{
_id = value;
RaisePropertyChangedEvent("Id");
}
}
...
Private IList<Item> _items;
public IList<Item> Items
{
get { return _items; }
set
{
_items = value;
RaisePropertyChangedEvent("Items");
}
}
}
Item.cs
public class Item : ObservableObject
{
private string _id;
public string Id
{
get { return _id; }
set
{
_id = value;
RaisePropertyChangedEvent("Id");
}
}
...
}
我正在尝试在选项卡式数据网格中显示它。第一个选项卡是“Person”,第二个选项卡是“Items”。
.XAML
<Window.DataContext>
<viewModels:PersonViewModel />
</Window.DataContext>
<TabControl>
<TabItem Header="Person">
<DataGrid ItemsSource="{Binding Person}" Width="1700" Height="800" AutoGenerateColumns="False" CanUserAddRows="false"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" RowHeight="20">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding Id}" IsReadOnly="True"/>
...
</DataGrid.Columns>
</DataGrid>
</TabItem>
<TabItem Header="Items">
<DataGrid ItemsSource="{Binding Person.Items}" Width="1700" Height="800" AutoGenerateColumns="False" CanUserAddRows="false"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" RowHeight="20">
<DataGrid.Columns>
<DataGridTextColumn Header="Person Id" Binding="{Binding Person.Id}" IsReadOnly="True"/>
<DataGridTextColumn Header="Id" Binding="{Binding Id}" IsReadOnly="True"/>
...
</DataGrid.Columns>
</DataGrid>
</TabItem>
</TabControl>
查看 Model.cs
private ObservableCollection<Person> _persons = new ObservableCollection<Person>();
public ObservableCollection<Person> Person
{
get { return _persons; }
set
{
_persons = value;
RaisePropertyChangedEvent("Person");
}
}
这是我所知道的。我假设我需要以某种方式遍历 Person 对象,然后执行 Person.Items 但不确定。
我能够完美地显示我的“Person”对象,这只是我遇到问题的“Items”选项卡。我收到错误“无法解析 ObservableCollection 类型的数据上下文中的属性“项目””
感谢您的帮助
【问题讨论】:
-
您的意思是主从视图还是所有
Items 和所有Persons 都应该出现在第二个选项卡中? -
你好 dymanoid,我只想让所有 Persons 的所有项目都出现在第二个选项卡中。第二个选项卡的第一列是对人员 ID 的引用
-
您在第一个 DataGrid 中看到任何人吗? TabControl的DataContext是什么?
-
我正确绑定到我的 ViewModel 并显示 person 对象。已将此代码添加到原始问题中。谢谢