2010-12-15 36 views
1

我下面的MSDN數據模板概述http://msdn.microsoft.com/en-us/library/ms742521.aspxMSDN數據模板化概述

但我覺得他們錯過了解釋something..for資源他們有:

<Window.Resources><local:Tasks x:Key="myTodoList"/></Window.Resources> 

而且他們都在XAML中已經是

<ListBox Width="400" Margin="10" 
     ItemsSource="{Binding Source={StaticResource myTodoList}}"/> 

沒有顯示C#代碼的後面,他們能夠顯示列表框中的項目列表。列表框沒有X:名稱,我不能在主窗口中添加的項目,並與一個單獨的類的任務,我做了以下(不工作)

using System.Collections; // use ArrayList 
using System.Collections.ObjectModel; // use Observable Collection 

namespace FooApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
    public class Tasks : ObservableCollection<Tasks> 
    { 
     string TaskName; 
     string Description; 
     int Priority; 

     public TasksStuff(string taskName, string description, int priority) 
     { 
      this.taskName = TaskName; 
      this.description = Description; 
      this.priority = Priority; 
     } 

     public string TaskName 
     {get{return this.taskName}} 

     public string Description 
     {get{return this.description}} 

     public string Priority 
     {get{return this.priority}} 

     private ArrayList Tasks 
     { 
      ArrayList taskList = new ArrayList(); 
      taskList.Add(new TasksStuff("A foo task", "doing foo",1)); 
      return taskList; 
     } 
    } 
} 

我真的很困惑。

回答

3

這應該是Tasks定義爲您的樣品正常工作:

public class Tasks : ObservableCollection<Task /*or whatever type you want to use here*/> 
{ 
    //... 
} 

- 編輯 -

// This is a class to store information for a single task 
// It has nothing to do with a collection of tasks 
public class Task 
{ 
    private String _taskName; 
    public String TaskName 
    { 
     get { return _taskName; } 
     set { _taskName = value; } 
    } 

    private String _description; 
    public String Description 
    { 
     get { return _description; } 
     set { _description = value; } 
    } 

    private Int32 _priority; 
    public Int32 Priority 
    { 
     get { return _priority; } 
     set { _priority = value; } 
    } 

    public Task(String taskName, String description, Int32 priority) 
    { 
     this.TaskName = taskName; 
     this.Description = description; 
     this.Priority = priority; 
    } 
} 

// This is a class that is a collection of Task types 
// Since it inherits from ObservableCollection, it is itself a collection 
// There is no need to declare/create an ArrayList inside. 
// And on a strict note, do not ever use ArrayList. It is obsolete and not strongly typed. 
// Use List<T>, ObservableCollection<T>, etc. instead. 
// Look for more Generic Collections in System.Collections.Generic namespace 
public class Tasks : ObservableCollection<Task> 
{ 
    public Tasks() 
    { 
     Add(new Task("A foo task", "doing foo", 1)); 
    } 
} 
+0

+1或IList的'',或'IBindingList'等 – user7116 2010-12-15 15:14:24

+0

我不能datalist.Add添加到ArrayList類。我應該如何添加到陣列? – KMC 2010-12-15 15:21:32

+0

我不明白,你能提供代碼嗎? – decyclone 2010-12-15 15:23:55