我有多个 UserControl,我想在 ListBox 上显示它们让我们假设我有一个 Employee 抽象 UserControl,并且我有 2 个或更多 UserControl,而不是为每个员工使用该 Employee,例如 AdministrativeEmployee 和 FactoryEmployee 我有不同的数据,但 UserControl 非常类似(相同大小,几乎相同的字段),在 ViewModel 端我有一个抽象的 EmployeeViewModel、AdministrativeEmployeeViewModel 和 FatoryEmployeeViewModel,在EmployeesView 上我有带有数据绑定的ListBox,在EmployeesViewModel 我有一个ICollectionEmployees
雇员视图.xaml:
xmlns:local="clr-namespace:Solution.Controls"
-
<ListBox ItemsSource={Binding Employees}>
<ListBox.ItemTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding}" Name="Presenter" />
<DataTemplate.Triggers>
<DataTrigger Value="{x:Type local:AdministrativeEmployeeView}">
<Setter TargetName="Presenter" Property="Content">
<Setter.Value>
<local:AdministrativeEmployeeView />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Value="{x:Type local:FactoryEmployeeView}">
<Setter TargetName="Presenter" Property="Content">
<Setter.Value>
<local:FactoryEmployeeView/>
</Setter.Value>
</Setter>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
员工视图模型.cs:
public ICollection<EmployeeViewModel> Employees { get; set; }
但这向我展示了 ListBox 上的 System.ItemTemplate 而不是每种员工类型的 UserControls