用WPF程序写一个HeaderedListBox控件 表头分别为序号、尺寸、前加工、中加工、后加工的程序
时间: 2023-12-31 08:07:09 浏览: 79
以下是一个简单的实现示例:
1. 创建一个名为 HeaderedListBox 的 WPF 用户控件。
2. 在控件的 XAML 中添加一个 Grid,用于布局控件。
3. 在 Grid 中添加一个 ListView 控件,用于显示列表数据。
4. 在 ListView 的 GridView 中添加列,分别为序号、尺寸、前加工、中加工、后加工。
5. 在代码中定义一个 HeaderedListBoxItem 类,用于表示列表中的项。
6. 在代码中添加一个 ItemsSource 属性,用于设置列表数据源。
7. 在代码中添加一个 Refresh 方法,用于刷新列表数据。
以下是代码示例:
HeaderedListBox.xaml:
```xml
<UserControl x:Class="WpfApp1.HeaderedListBox"
...
xmlns:local="clr-namespace:WpfApp1">
<Grid>
<ListView x:Name="listView">
<ListView.View>
<GridView>
<GridViewColumn Header="序号" DisplayMemberBinding="{Binding Id}" />
<GridViewColumn Header="尺寸" DisplayMemberBinding="{Binding Size}" />
<GridViewColumn Header="前加工" DisplayMemberBinding="{Binding PreProcess}" />
<GridViewColumn Header="中加工" DisplayMemberBinding="{Binding MidProcess}" />
<GridViewColumn Header="后加工" DisplayMemberBinding="{Binding PostProcess}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
</UserControl>
```
HeaderedListBox.xaml.cs:
```csharp
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
namespace WpfApp1
{
public partial class HeaderedListBox : UserControl
{
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IEnumerable<HeaderedListBoxItem>), typeof(HeaderedListBox));
public IEnumerable<HeaderedListBoxItem> ItemsSource
{
get { return (IEnumerable<HeaderedListBoxItem>)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
public HeaderedListBox()
{
InitializeComponent();
}
public void Refresh()
{
listView.ItemsSource = ItemsSource;
}
}
public class HeaderedListBoxItem
{
public int Id { get; set; }
public string Size { get; set; }
public string PreProcess { get; set; }
public string MidProcess { get; set; }
public string PostProcess { get; set; }
}
}
```
可以在其他 WPF 窗口中使用 HeaderedListBox 控件,例如:
```xml
<Window x:Class="WpfApp1.MainWindow"
...
xmlns:local="clr-namespace:WpfApp1">
<Grid>
<local:HeaderedListBox x:Name="headeredListBox" />
</Grid>
</Window>
```
在代码中设置数据源并刷新列表:
```csharp
var items = new List<HeaderedListBoxItem>();
items.Add(new HeaderedListBoxItem { Id = 1, Size = "10x20", PreProcess = "A", MidProcess = "B", PostProcess = "C" });
items.Add(new HeaderedListBoxItem { Id = 2, Size = "30x40", PreProcess = "D", MidProcess = "E", PostProcess = "F" });
headeredListBox.ItemsSource = items;
headeredListBox.Refresh();
```
阅读全文