我正在研究WPF应用程序。出于某种原因,我的视图模型中的值未显示
MyViewModel.cs
public class MyViewModel : ViewModel
{
private ObservableCollection<Item> items = Item.GetAll();
public ObservableCollection<Item> Items
{
get { return items; }
set { items = value; }
}
}
public class Item
{
public int ID { get; set; }
public List<int> Tally = new List<int>();
public int Total { get; set; }
public Item(int id)
{
this.ID = id;
for (int i = 0; i < 7; i++)
this.Tally.Add(0);
}
public static ObservableCollection<Item> GetAll()
{
ObservableCollection<Item> items = new ObservableCollection<Item>();
for (int i = 0; i <= 10; i++)
{
items.Add(new Item(i));
}
return items;
}
}
MyPage.xaml
<telerik:RadGridView x:Name="myGridView" Grid.Row="1" AutoGenerateColumns="False"
ItemsSource="{Binding Path=Items}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="ID" DataMemberBinding="{Binding Path=ID}" IsReadOnly="True" />
<telerik:GridViewDataColumn Header="Monday" DataMemberBinding="{Binding Path=Tally[0], Mode=OneWay}" IsReadOnly="True" Width="1*" />
<telerik:GridViewDataColumn Header="Tuesday" DataMemberBinding="{Binding Path=Tally[1], Mode=OneWay}" IsReadOnly="True" Width="1*" />
<telerik:GridViewDataColumn Header="Wednesday" DataMemberBinding="{Binding Path=Tally[2], Mode=OneWay}" IsReadOnly="True" Width="1*" />
<telerik:GridViewDataColumn Header="Thursday" DataMemberBinding="{Binding Path=Tally[3], Mode=OneWay}" IsReadOnly="True" Width="1*" />
<telerik:GridViewDataColumn Header="Friday" DataMemberBinding="{Binding Path=Tally[4], Mode=OneWay}" IsReadOnly="True" Width="1*" />
<telerik:GridViewDataColumn Header="Total" DataMemberBinding="{Binding Path=Total, Mode=OneWay}" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
每个项目的条目按预期显示在网格中。但是,只有第一列和最后一列具有值。星期一到星期五列中的值(引用Tally List的列)没有出现。我不确定我做错了什么。有人可以告诉我吗?
谢谢!
答案 0 :(得分:4)
答案 1 :(得分:0)
您没有在可观察集合中的任何位置使用Tally项目,无论是静态方法返回的本地集合还是viewmodel中的observable集合。
项目应该只是一个域类型对象(具有一些自动getter和setter属性)。您应该创建一个服务并将其命名为 ItemsRepository ,它将返回 IEnumerable&lt;在存储库中调用 GetAll()时,可以使用项目&gt; 集合。如果可以的话,总是尽量避免使用任何静态的东西,特别是一个会返回集合的方法。