我正在关注msdn数据模板概述http://msdn.microsoft.com/en-us/library/ms742521.aspx
但是我觉得他们错过了解释的东西......对于他们拥有的资源:
<Window.Resources><local:Tasks x:Key="myTodoList"/></Window.Resources>
他们在XAML中的所有内容都是
<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource myTodoList}}"/>
在没有显示C#代码如何落后的情况下,他们能够在ListBox中显示项目列表。 ListBox没有x:Name,我无法在MainWindow中添加项目,并且使用单独的类Tasks,我执行了以下操作(这不起作用)
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;
}
}
}
我真的很困惑。
答案 0 :(得分: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));
}
}