欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# WPF 绑定到数据源的控件无法更新(显示空白)的解决办法

程序员文章站 2022-06-08 15:54:52
...

首先回顾一下在 WPF 中将控件进行数据绑定的写法。
例如,要将一个两列的 ListBox 进行数据绑定,在 XAML 中,该 ListBox 的 XAML 代码大致为

<ListBox Name="EmployeeList" HorizontalContentAlignment="Stretch">
	<ListBox.ItemTemplate>
		<DataTemplate>
			<Grid>
				<Grid.ColumnDefinitions>
					<ColumnDefinition Width="*"/>
					<ColumnDefinition Width="*"/>
				</Grid.ColumnDefinitions>
				<TextBlock Text="{Binding ID}" Grid.Column="0"/>
				<TextBlock Text="{Binding Name}" Grid.Column="1"/>
			</Grid>
		</DataTemplate>
	</ListBox.ItemTemplate>
</ListBox>

对应同名的 .cs 文件中的 C# 代码

class EmployeeListItem {
	public string ID { get; set; }
	public string Name { get; set; }
	
	public EmployeeListItem(string id, string name) {
		ID = id; Name = name;
	}
}
List<EmployeeListItem> Employees = new();
EmployeeList.ItemsSource = Employees;

需要注意:
数据源的每一项参与绑定的成员必须为属性,具有 get 和 set 两个 accessor,且必须为公有成员(public 修饰)。如果访问修饰符为 private,则无法在控件中显示数据。
例如,ListBox 控件 EmployeeList 绑定到了线性表 Employees,它由若干个 EmployeeListItem 构成,每个 EmployeeListItem 拥有两个成员 ID 和 Name,它们都必须为属性,且为 public。如果用 private 修饰这两个属性,那么在 EmployeeList 这个列表框中,就不能看到数据源 Employees 的内容。

相关标签: # C# 基础课