我的WPF应用中有一个用户控件
<UserControl x:Class="NewWPFApp.ProgressControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Expander Header="{Binding Path=Headerval}">
<StackPanel Margin="10,4,0,0">
<DataGrid
x:Name="dataGrid"
AutoGenerateColumns="False"
ItemsSource="{Binding Path=records}"/>
</StackPanel>
</Expander>
</Grid>
在我Mainwindow
时我正在做这个
<Window xmlns:NewWPFApp="clr-namespace:NewWPFApp" x:Class="NewWPFApp.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>
<ListBox x:Name="peopleListBox" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Background="AliceBlue">
<NewWPFApp:ProgressControl Height="100" Width="100"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
我看不到输出。 如果我从数据模板中删除它,那么它可以工作。但不在数据模板中。
我缺少什么?
由于
答案 0 :(得分:0)
ListBox.ItemTemplate
指定如何显示添加到列表框的项目。在您的情况下,您使用自己的自定义控件。但是,与此同时,您没有向列表框中添加任何项目,因此无需显示任何内容。要填充列表框,您可以使用绑定,例如:
<ListBox ItemsSource="{Binding ItemsToBeDisplayed}" x:Name="peopleListBox" >
...
</ListBox>
其中ItemsToBeDisplayed
是视图模型的属性(如果使用MVVM模式),它返回一组对象。如果不是,您可以在不使用绑定的情况下填充ItemsSource
:
var list = new List<People>();
//Add objects to a list
peopleListBox.ItemsSource = list;
我假设您拥有People
课程,可以为您希望在应用程序中显示的人员建模。 People
类应具有Headerval
和records
属性,因为您在ProgressControl
控件中使用它们。如果按照说明执行操作,则会为ProgressControl
中的每个对象创建ItemsSource
控件的新实例。