在 WPF 中对嵌套列表属性进行数据绑定
本文关键字:属性 数据绑定 列表 嵌套 WPF | 更新日期: 2023-09-27 18:36:36
我使用以下 XAML 代码显示选中列表框的列表。
<ListBox x:Name="lbxProjects" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<ListBox x:Name="lbxUnits" ItemsSource="{Binding Units}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<CheckBox Content="{Binding unit.Name}" IsChecked="{Binding isSelected}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
数据模型如下
public class ProjectsListBox
{
public Project project { get; set; }
public List<UnitsCheckBox> Units = new List<UnitsCheckBox>();
public ProjectsListBox(Project project)
{
this.project = project;
foreach(var d in project.Documents)
{
Units.Add(new UnitsCheckBox(d));
}
}
}
public class UnitsCheckBox : INotifyPropertyChanged
{
public Document unit { get; set; }
private bool isselected = true;
public bool isSelected
{
get { return isselected; }
set
{
isselected = value;
NotifyPropertyChanged("isSelected");
}
}
public UnitsCheckBox(Document d)
{
unit = d;
}
}
我正在为父列表框分配数据源,例如
lbxProjects.DataContext = projectsList;
该代码创建子列表框,但不创建子列表框中的复选框。我错过了什么?
WPF 应如何解析单元。名字?
如果类型"单位复选框"包含"名称"属性,则该复选框的内容应绑定到"名称":
Content="{Binding Name}"
应始终指定数据模板的类型:
<DataTemplate DataType="{x:Type local:UnitsCheckBox}" ...>
这些是可能的问题,但我不能确定,除非你给我们单位复选框代码。