Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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/4/wpf/14.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# WPF控件未显示在ItemTemplate(Listbox/ListView)中_C#_Wpf_Xaml - Fatal编程技术网

C# WPF控件未显示在ItemTemplate(Listbox/ListView)中

C# WPF控件未显示在ItemTemplate(Listbox/ListView)中,c#,wpf,xaml,C#,Wpf,Xaml,我最近开始使用XAML和WPF。我刚刚在wpf中创建了一个新项目,并添加了下面的XAML代码。但是…在“Listbox.ItemTemplate”或“ListView.ItemTemplate”中添加的任何项都不会显示在设计器窗口中。我做错了什么?这是一个新的项目,所以还没有添加代码隐藏的东西。我为此挠头了15分钟,但没有成功。请帮忙 <Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.mic

我最近开始使用XAML和WPF。我刚刚在wpf中创建了一个新项目,并添加了下面的XAML代码。但是…在“Listbox.ItemTemplate”或“ListView.ItemTemplate”中添加的任何项都不会显示在设计器窗口中。我做错了什么?这是一个新的项目,所以还没有添加代码隐藏的东西。我为此挠头了15分钟,但没有成功。请帮忙

<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Grid Margin="10">
        <ListBox Margin="10">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Name: " />   
                        <TextBlock Text="Age: " /> 
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>    
    </Grid>
</Window>


您应该将ListBox或整个窗口绑定到某些DataContext(通常这是包含需要显示的数据的viewmodel)或明确指定列表项

在代码段中,您只指定了项模板,而不是项本身

XAML定义项(简单字符串)的示例:


123
456
此示例包含DataContext和绑定。 XAML:


姓名:
年龄:
代码隐藏:

namespace WpfApplication3
{
    public class PersonViewModel
    {
        public PersonViewModel(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

        public string Name
        {
            get { return name; }
        }
        private string name;

        public int Age
        {
            get { return age; }
        }
        private int age;
    }

    public class MainViewModel
    {
        public MainViewModel()
        {
            persons = new ObservableCollection<PersonViewModel>()
            {
                new PersonViewModel("Lez", 146),
                new PersonViewModel("Binja", 158),
                new PersonViewModel("Rufus the Destroyer", 9000)
            };
        }

        public ObservableCollection<PersonViewModel> Persons
        {
            get { return persons; }
        }

        private ObservableCollection<PersonViewModel> persons;
    }
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.DataContext = new MainViewModel();
        }
    }
}
命名空间WpfApplication3
{
公共类PersonViewModel
{
PublicPersonViewModel(字符串名称,整数)
{
this.name=名称;
这个。年龄=年龄;
}
公共字符串名
{
获取{返回名称;}
}
私有字符串名称;
公共信息
{
获取{返回年龄;}
}
私人互联网;
}
公共类主视图模型
{
公共主视图模型()
{
人员=新观察到的集合()
{
新PersonViewModel(“Lez”,146),
新PersonViewModel(“Binja”,158),
新PersonViewModel(“驱逐舰鲁弗斯”,9000)
};
}
公众人士
{
获取{返回人员;}
}
私人收款人;
}
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
this.DataContext=新的MainViewModel();
}
}
}

重要:不要忘记在viewmodels的属性可变的情况下正确实现INotifyPropertyChanged(例如,如果您将有PersonViewModel的“Name”和“Age”属性的设置器)。

您应该将列表框或整个窗口绑定到某个数据上下文(通常这是包含需要显示的数据的viewmodel)或显式指定列表项

在代码段中,您只指定了项模板,而不是项本身

XAML定义项(简单字符串)的示例:


123
456
此示例包含DataContext和绑定。 XAML:


姓名:
年龄:
代码隐藏:

namespace WpfApplication3
{
    public class PersonViewModel
    {
        public PersonViewModel(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

        public string Name
        {
            get { return name; }
        }
        private string name;

        public int Age
        {
            get { return age; }
        }
        private int age;
    }

    public class MainViewModel
    {
        public MainViewModel()
        {
            persons = new ObservableCollection<PersonViewModel>()
            {
                new PersonViewModel("Lez", 146),
                new PersonViewModel("Binja", 158),
                new PersonViewModel("Rufus the Destroyer", 9000)
            };
        }

        public ObservableCollection<PersonViewModel> Persons
        {
            get { return persons; }
        }

        private ObservableCollection<PersonViewModel> persons;
    }
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.DataContext = new MainViewModel();
        }
    }
}
命名空间WpfApplication3
{
公共类PersonViewModel
{
PublicPersonViewModel(字符串名称,整数)
{
this.name=名称;
这个。年龄=年龄;
}
公共字符串名
{
获取{返回名称;}
}
私有字符串名称;
公共信息
{
获取{返回年龄;}
}
私人互联网;
}
公共类主视图模型
{
公共主视图模型()
{
人员=新观察到的集合()
{
新PersonViewModel(“Lez”,146),
新PersonViewModel(“Binja”,158),
新PersonViewModel(“驱逐舰鲁弗斯”,9000)
};
}
公众人士
{
获取{返回人员;}
}
私人收款人;
}
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
this.DataContext=新的MainViewModel();
}
}
}

重要信息:不要忘记在viewmodels的属性可变的情况下正确实现INotifyPropertyChanged(例如,如果您将为PersonViewModel的“名称”和“年龄”属性设置器).

您看不到任何项目,因为您的列表框在设计器视图中不包含任何数据。若要填充列表框,应将列表绑定到列表框的属性“ItemsSource”,或将数据直接添加到属性“items”(XAML或代码隐藏)


如果要在designer视图中正确显示项目,应将ViewModel绑定到页面的DataContext,并创建一个“示例数据”文件(例如,通过Blend)。

由于列表框在designer视图中不包含任何数据,因此您看不到任何项目。要填充它,应将列表绑定到属性列表框的“ItemsSource”,或直接将数据添加到属性“Items”(XAML或代码隐藏)


如果希望在designer视图中正确显示项目,则应将ViewModel绑定到页面的DataContext,并创建一个“示例数据”文件(例如,通过Blend).

项目模板基本上用于显示自定义数据。只需先使用简单的字符串项目。它将显示在列表框中。

项目模板基本上用于显示自定义数据
namespace WpfApplication3
{
    public class PersonViewModel
    {
        public PersonViewModel(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

        public string Name
        {
            get { return name; }
        }
        private string name;

        public int Age
        {
            get { return age; }
        }
        private int age;
    }

    public class MainViewModel
    {
        public MainViewModel()
        {
            persons = new ObservableCollection<PersonViewModel>()
            {
                new PersonViewModel("Lez", 146),
                new PersonViewModel("Binja", 158),
                new PersonViewModel("Rufus the Destroyer", 9000)
            };
        }

        public ObservableCollection<PersonViewModel> Persons
        {
            get { return persons; }
        }

        private ObservableCollection<PersonViewModel> persons;
    }
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.DataContext = new MainViewModel();
        }
    }
}