Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据绑定不工作,无法看到任何错误_C#_Wpf_Xaml - Fatal编程技术网

C# 数据绑定不工作,无法看到任何错误

C# 数据绑定不工作,无法看到任何错误,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

我正在学习msdn()中关于WPF的教程。我没有得到任何错误,但也没有输出我希望从代码中指定的属性中查看列表框中的数据。我正在粘贴下面的xaml和cs文件。在此方面的任何帮助都将不胜感激。如果有人能给我推荐一些关于WPF而不是msdn的教程,我将不胜感激

main window.xaml

<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
更改为属性?