gpt4 book ai didi

wpf - 通过 xaml 中的数据绑定(bind)基于对象类型动态加载不同的 UserControl

转载 作者:行者123 更新时间:2023-12-04 14:36:45 27 4
gpt4 key购买 nike

WPF 中有没有办法获得相同的功能 DataTemplateSelector给你,但对于 UserControls?

假设我有一个 StackView,我想将一个 IEnumerable 对象绑定(bind)到该 StackView。我想做的是以某种方式有一个映射,对于绑定(bind)的 IEnumerable 中的每个对象类型,查看对象类型并确定要添加到 StackView 的 UserControl。

因此,给定三个类:

public class House : Building{}

public class Apartment : Building{}

public class Tent : Building{}

其中每个类都继承自 Building并且有自己定义的 UserControl , 我想设置 DataContextIEnumerable<Building>并以某种方式让 StackView 使用特定类型的 UserControl 填充其子集。

我想用尽可能少的代码来做到这一点。数据绑定(bind)和 XAML 管道磁带越多越好。

最佳答案

您可以在 DataTemplate 中使用复杂的用户控件;只需声明 DataTemplate作为您的UserControl .

例子:

  <Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication4"
Title="MainWindow" Height="300" Width="300" Name="UI" >
<Window.Resources>
<DataTemplate DataType="{x:Type local:House}" >
<local:HouseUserControl DataContext="{Binding}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type local:Apartment}">
<local:ApartmentUserControl DataContext="{Binding}"/>
</DataTemplate>
</Window.Resources>

<Grid>
<ListBox ItemsSource="{Binding ElementName=UI, Path=ListOfBuildings}" />
</Grid>
</Window>

关于wpf - 通过 xaml 中的数据绑定(bind)基于对象类型动态加载不同的 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13752733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com