用数据(字符串)填充这些listbox
的c#代码是什么
我在https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/data-templating-overview上看到了
,但是没有C#代码。
我想要一个listbox
像链接上的“定义简单的数据模板”
https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/data-templating-overview
列表框[1]中的图片:https://i.stack.imgur.com/K4HZS.png
<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource myTodoList}}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=TaskName}" />
<TextBlock Text="{Binding Path=Description}"/>
<TextBlock Text="{Binding Path=Priority}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:2)
为此,您将需要了解MVVM模式。 首先,您需要在模型中的TODO类具有TaskName,Description和Priority的属性。
public class Todo
{
public string TaskName { get; set; }
public string Description { get; set; }
public int Priority { get; set; }
}
然后,您将需要一个类来将TODO的集合(您的“ myTodoList”)存储在xaml中:
public class TodoViewModel
{
public ObservableCollection<Todo> TodoList { get; } = new ObservableCollection<Todo>();
public TodoViewModel()
{
TodoList.Add(new Todo { TaskName = "Todo1", Description = "Todo 1 Description", Priority = 1 });
TodoList.Add(new Todo { TaskName = "Todo2", Description = "Todo 2 Description", Priority = 2 });
}
}
然后,您需要在xaml后面的代码中设置datacontext:
public partial class MainWindow : Window
{
public MainWindow()
{
this.DataContext = new TodoViewModel();
InitializeComponent();
}
}
最后,这是您的XAML(我做了一点更改,您不需要“ Path =“)之类的东西:
<ListBox Width="400" Margin="10" ItemsSource="{Binding TodoList}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding TaskName}" />
<TextBlock Text="{Binding Description}"/>
<TextBlock Text="{Binding Priority}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
它应该能很好地工作:)
答案 1 :(得分:0)
您应该有这样的东西。
MainWindow.xaml.cs:
public List<ToDo> ToDoList {get; set;}
public MainWindow()
{
InitializeComponent();
DataContext=this;
ToDoList= new List<ToDo>()
{
new ToDo{TaskName="Task1",Description="First Task"},
new ToDo{TaskName="Task2",Description="Second Task"}
};
}
ToDo.cs:
public class ToDo
{
public string TaskName {get; set;}
public string Description {get; set;}
}
将Binding表达式修改为:
<ListBox Width="400" Margin="10"
ItemsSource="{Binding ToDoList}">