Привязка к массиву в WPF - PullRequest
       1

Привязка к массиву в WPF

1 голос
/ 03 декабря 2011

Я работаю над приложением 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>

Запись для каждого предмета появляется в сетке, как и ожидалось. Однако только первый и последний столбцы имеют значения. Значения в столбцах с понедельника по пятницу (столбцы, которые ссылаются на список подсчета) не отображаются. Я не уверен, что я делаю неправильно. Может кто-нибудь сказать мне, пожалуйста?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 03 декабря 2011

Tally - это поле , должно быть открытым свойством .

(я также надеюсь, что вам известно о INPC, если вы хотите внести изменения во время выполнения)

0 голосов
/ 03 декабря 2011

Вы не используете элементы Tally нигде в наблюдаемых коллекциях, ни локальную коллекцию, которую вы возвращаете в статическом методе, или наблюдаемую коллекцию в модели представления.

Элемент должен быть просто объектом типа домена (с несколькими свойствами автоматического получения и установки). Вам следует создать службу и назвать ее ItemsRepository , которая будет возвращать IEnumerable collection, когда вы вызываете GetAll () в хранилище. Всегда старайтесь избегать использования чего-либо статического, если это возможно, особенно метода, который возвращает коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...