C# 数据绑定不工作,无法看到任何错误
我正在学习msdn()中关于WPF的教程。我没有得到任何错误,但也没有输出我希望从代码中指定的属性中查看列表框中的数据。我正在粘贴下面的xaml和cs文件。在此方面的任何帮助都将不胜感激。如果有人能给我推荐一些关于WPF而不是msdn的教程,我将不胜感激 main window.xamlC# 数据绑定不工作,无法看到任何错误,c#,wpf,xaml,C#,Wpf,Xaml,我正在学习msdn()中关于WPF的教程。我没有得到任何错误,但也没有输出我希望从代码中指定的属性中查看列表框中的数据。我正在粘贴下面的xaml和cs文件。在此方面的任何帮助都将不胜感激。如果有人能给我推荐一些关于WPF而不是msdn的教程,我将不胜感激 main window.xaml <Window x:Class="Practice_1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen
<Window x:Class="Practice_1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:Practice_1"
mc:Ignorable="d"
Title="MainWindow" Height="150" Width="300">
<Window.Resources>
</Window.Resources>
<ListBox Width="Auto" Height="Auto">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Description}"/>
<TextBlock Text="{Binding Path=StartPrice}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
MainWindow.xaml.cs
namespace Practice_1
{
public partial class MainWindow : Window
{
public List<AuctionItem> AuctionItemObjects;
public MainWindow()
{
AuctionItemObjects = new List<AuctionItem>()
{
new AuctionItem()
{
Description = "Inside C#. second edition",
StartDate = "8/8/2016",
StartPrice = "1000",
Category = "Books",
OwnerName = "Chummi",
MemberSince = "2004",
OwnerRating = "15",
SpecialFeatures = "Color",
CurrentPrice = "10"
},
new AuctionItem()
{
Description = "Laptop - only 1 year old",
StartDate = "8/9/2016",
StartPrice = "100",
Category = "Electronics",
OwnerName = "Mark",
MemberSince = "2005",
OwnerRating = "10",
SpecialFeatures = "Highlight"
},
new AuctionItem()
{
Description = "TV Drama Series",
StartDate = "8/10/2016",
StartPrice = "400",
Category = "DVDs",
OwnerName = "Chuhaan",
MemberSince = "2006",
OwnerRating = "5",
SpecialFeatures = ""
},
new AuctionItem()
{
Description = "My DVD Collection",
StartDate = "8/11/2016",
StartPrice = "5000",
Category = "DVDs",
OwnerName = "Charsi",
MemberSince = "2008",
OwnerRating = "35",
SpecialFeatures = "Highlight"
},
};
InitializeComponent();
DataContext = this;
}
public class AuctionItem
{
public string Description { get; set; }
public string StartPrice { get; set; }
public string StartDate { get; set; }
public string Category { get; set; }
public string SpecialFeatures { get; set; }
public string OwnerName { get; set; }
public string OwnerRating { get; set; }
public string MemberSince { get; set; }
public string CurrentPrice { get; set; }
}
}
}
namespace实践_1
{
公共部分类主窗口:窗口
{
公开拍卖物品清单;
公共主窗口()
{
AuctionItemObjects=新列表()
{
新拍卖项目()
{
Description=“Inside C#.second edition”,
StartDate=“8/8/2016”,
StartPrice=“1000”,
Category=“图书”,
OwnerName=“Chummi”,
MemberSince=“2004”,
OwnerRating=“15”,
SpecialFeatures=“Color”,
CurrentPrice=“10”
},
新拍卖项目()
{
Description=“笔记本电脑-仅1岁”,
StartDate=“8/9/2016”,
StartPrice=“100”,
类别=“电子”,
OwnerName=“标记”,
MemberSince=“2005”,
OwnerRating=“10”,
SpecialFeatures=“突出显示”
},
新拍卖项目()
{
Description=“电视连续剧”,
StartDate=“8/10/2016”,
StartPrice=“400”,
Category=“DVD”,
OwnerName=“Chuhaan”,
MemberSince=“2006”,
OwnerRating=“5”,
SpecialFeatures=“”
},
新拍卖项目()
{
Description=“我的DVD收藏”,
StartDate=“8/11/2016”,
StartPrice=“5000”,
Category=“DVD”,
OwnerName=“Charsi”,
MemberSince=“2008”,
OwnerRating=“35”,
SpecialFeatures=“突出显示”
},
};
初始化组件();
DataContext=this;
}
公开拍卖项目
{
公共字符串说明{get;set;}
公共字符串StartPrice{get;set;}
公共字符串StartDate{get;set;}
公共字符串类别{get;set;}
公共字符串特殊功能{get;set;}
公共字符串所有者名称{get;set;}
公共字符串OwnerRating{get;set;}
自{get;set;}起的公共字符串成员
公共字符串CurrentPrice{get;set;}
}
}
}
您需要将列表框
绑定到您的收藏
比如:
<ListBox Width="Auto" Height="Auto" ItemsSource="{Binding AuctionItemObjects}">
否则,它如何知道您在列表框中想要什么
但是请注意以下几点:
- 通常最好有一个模型和一个视图模型。视图模型将是视图(即窗口)的
DataContext
。这是MVVM模式,您应该学习它
- 在基础列表中添加或删除项目时,您的
列表
不会更新您的列表框
。这是因为它不实现,如果需要,请考虑<代码>
AuctionItem
中的任何属性在更改时都不会更新UI,因为您的
AuctionItemObjects
必须是属性,而不是字段。WPF不会绑定字段,因此public List AuctionItemObjects{get;set;}
您没有将列表框
绑定到任何内容。如果你不告诉它,你怎么能指望它知道它应该展示哪个收藏?你能告诉我应该写些什么吗?因为我尝试了几件都不管用的东西。@stalbaig:你需要的是一个属性,而不是字段(最后一个项目符号)。谢谢你的详细回复。请让我们先帮助我显示这些项目,我将尝试在之后实现更改通知。对于我的学习,我首先想清除这个障碍,我使用了“ItemsSource={Binding AuctionItemObjects}”的语法,但它不起作用。@stalbaig:您是否将AuctionItemObjects
更改为属性?