2012-04-26 2 views
2

У меня проблема с привязкой списка к списку, и я получаю пустой список. Я попробовал перечислить свой список в собственность, поскольку я видел, как это решало проблему других народов без везения, любая помощь была оценена.Binding ListView not Binding

Вот XAML

<Window x:Class="key_stage_level_2_app.Window7" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
DataContext="{Binding RelativeSource={RelativeSource Self}}" 
Title="Window7" Height="600" Width="800" Loaded="Window_Loaded"> 

<Grid> 
    <TabControl Height="536" HorizontalAlignment="Left" Name="tabControl1"  VerticalAlignment="Top" Width="778"> 
     <TabItem Header="Results2" Name="tabItem2"> 
      <Grid> 
       <ListView Height="323" HorizontalAlignment="Left" Margin="107,96,0,0" Name="listView2" VerticalAlignment="Top" Width="186" ItemsSource="{Binding Path=someList}" > 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Width="80" Header="Name" DisplayMemberBinding="{Binding Path=Name}"/> 
          <GridViewColumn Width="80 " Header="Result" DisplayMemberBinding="{Binding Path=Result}"/>  
         </GridView> 
        </ListView.View> 
       </ListView> 

Вот код позади

namespace key_stage_level_2_app 
{ 
/// <summary> 
/// Interaction logic for Window7.xaml 
/// </summary> 
public partial class Window7 : Window 
{ 

    App app = (App)App.Current; 
    private List<Pupil> someList { get; set; } 


    public Window7() 
    { 
     someList = new List<Pupil>(); 

     foreach (Pupil pupil in app.PupilList) 
     { 
      someList.Add(pupil); 

     } 
     someList.Add(new Pupil 
     { 
      Name = "Simon", 
      Result = 100, 
      Grade = 100.00, 
      ExtensionWork = true, 
      TakenTest = true 

     }); 
     Console.WriteLine("someList size = " + someList.Count); 

     InitializeComponent(); 

    } 

А Класс

class Pupil 
{ 

    public String name; 
    int result; 
    double grade; 
    bool extensionWork; 
    bool takenTest; 

    public Pupil(String Pname, int Presult, double Pgrade, bool PextensionWork, bool PtakenTest) 
    { 
     Name = Pname; 
     Result = Presult; 
     Grade = Pgrade; 
     ExtensionWork = PextensionWork; 
     TakenTest = PtakenTest; 

    } 
    public Pupil() 
    { 

    } 

    public String Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 


    public int Result 
    { 
     get { return result; } 
     set { result = value; } 
    } 


    public double Grade 
    { 
     get { return grade; } 
     set { grade = value; } 
    } 


    public bool ExtensionWork 
    { 
     get { return extensionWork; } 
     set { extensionWork = value; } 
    } 


    public bool TakenTest 
    { 
     get { return takenTest; } 
     set { takenTest = value; } 
    } 

ответ

1

Изменить модификатор доступа класса к:

public class Pupil 

и сделать someList собственности общественности:

public List<Pupil> SomeList { get; set; } 

Таким образом, точка зрения может реально увидеть.

+0

Это сработало благодаря большому количеству! –

+0

Добро пожаловать. :) – ShadeOfGrey

1

Вы не получаете ничего, потому что вы создаете новый список, но список пуст, сделайте следующее:

someList = new List<Pupil>(); 

someList.Add(new Pupil 
     { 
      Name = "Simon", 
      Result = 100, 
      Grade = 100.00, 
      ExtensionWork = true, 
      TakenTest = true 

     }); 

     foreach (Pupil pupil in app.PupilList) 
     { 
      someList.Add(pupil); 

     } 
+0

Console.WriteLine ("someList size =" + someList.Count); is == 2 список не пуст, спасибо в любом случае –

+0

да, но в foreach loop ваш список - новый список, который не имеет значения ... – Zaki

+0

список содержит ученика, добавленного из другого окна, плюс я добавил нового ученика на этот чтобы список не был пустым. –

1

После InitializeComponent(); добавьте следующую строку:

DataContext = this; 

, так что View знает, откуда взять someList.

Кроме того, как Window7, так и Pupil должны реализовывать интерфейс INotifyPropertyChanged, позволяющий обновлять и избегать утечек памяти.

+0

Я пробовал это предыдущее, не повезло .. и у меня это в XAML DataContext = "{Binding RelativeSource = {RelativeSource Self}}", поэтому этого не нужно. спасибо в любом случае –