2010-08-21 6 views
1

que je fais ce XAML:WPF comment lier gridview?

<StackPanel Margin="320,0,0,0" Grid.RowSpan="2"> 
     <ListView ItemsSource="{Binding employeeCollection}"> 
      <ListView.View> 
       <GridView> 

        <GridViewColumn Header="Employee ID" DisplayMemberBinding="{Binding Path=EmployeeID}"/> 
        <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=FirstName}"/> 
        <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding Path=LastName}"/> 
        <GridViewColumn Header="start" DisplayMemberBinding="{Binding Path=startHR}"/> 
        <GridViewColumn Header="finish" DisplayMemberBinding="{Binding Path=finishHR}"> 

       </GridViewColumn> 
      </GridView> 
    </ListView.View> 

     </ListView> 
    </StackPanel> 

et le code se cache derrière:

class employeesGrid //: INotifyPropertyChanged 
{ 
    ObservableCollection<employiesData> _employeeCollection = 
    new ObservableCollection<employiesData>(); 

    public employeesGrid() 
{ 
    _employeeCollection.Add(new employiesData{ 

     EmployeeID = "World Of Warcraft", 
     FirstName = "Blizzard", 
     LastName = "Blizzard", 
     startHR = "2222", 
     finishHR = "dfs" 
    }); 


} 

    public ObservableCollection<employiesData> employeeCollection 
{ get { return _employeeCollection; } } 


} 

public class employiesData 
{ 
    public string EmployeeID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string startHR { get; set; } 
    public string finishHR { get; set; } 
} 

}

où l'intérieur de ma fenêtre principale je fais:

// constructeur: InitializeComponent(); employeesGrid em = new employeesGrid();

1.can quelqu'un s'il vous plaît me guider ce que je fais mal? 2.INotifyPropertyChanged Pourquoi devrais-je l'utiliser? comment dois-je l'utiliser?

thanku pour regarder dans mon travail, cela signifie beaucoup pour moi :)

permet de dire que je veux deux sturctures comme celui-ci dans mon programme ce qui serait le meilleur implmantion ????

+0

i trouvé allready le soultion thanku –

Répondre

1

Vous ne définissez jamais le DataContext de votre liste.

Essayez dans votre constructeur de fenêtre:

InitializeComponent(); 
employeesGrid em = new employeesGrid(); 
this.DataContext = em; 
+0

oui, le problème est DataContext = vm // vm est classe ConnectionViewModel: INotifyPropertyChanged alors comment je les faire vivre togther ce qui devrait être le archtcture? –

+0

@ yoav.str, la propriété employeeCollection doit être exposée via la classe ConnectionViewModel. Dans le getter, vous pouvez simplement renvoyer employeesGrid.employeeCollection si vous devez conserver deux classes au lieu de les fusionner en une seule. –

+0

mmm signifiant connectionHandler hm qui support le numéro de collection? Y a-t-il une meilleure archticture? ou n'importe quel exemple comment le faire aussi simple/pro qu'il obtient? –

1
  1. Vous devez lier à votre instance de classe datasource de votre point de vue. Dans votre constructeur, procédez comme suit: this.DataContext = new employeesGrid();
  2. INotifyPropertyChanged est une interface que vous devez utiliser si vous souhaitez que votre interface utilisateur actualise son contenu lorsque le contenu sous-jacent change.