gpt4 book ai didi

WPF:是否可以创建多个 ListView.View 模板并在运行时动态选择一个?

转载 作者:行者123 更新时间:2023-12-04 07:01:46 27 4
gpt4 key购买 nike

我想要 ListView 控件,它可以填充多种不同对象类型中的一种(不混合,总是只有一种类型)。我想动态调整列以对应列表中当前的对象类型。

我知道我可以以编程方式 ( Adding Columns programatically to listview in WPF? ) 执行此操作,但我想知道是否可以将 XAML 中的不同列描述 ( GridView s) 定义为资源,然后在对象类型更改时在运行时选择我需要的一个?

澄清
我正在使用在列中显示详细信息的 ListView 控件。列定义如下:

<ListView x:Name="TheList">
<ListView.View>
<GridView>
<GridViewColumn Header="Columns" Width="80"/>
<GridViewColumn Header="Added" Width="80"/>
<GridViewColumn Header="Automatically" Width="100"/>
</GridView>
</ListView.View>
</ListView>

我的问题是:我可以定义多个 ListView.View 部分并根据列表中的对象类型在它们之间切换吗?该列表一次仅包含一种类型的对象。我只需要显示一组不同的属性。

到目前为止,我收到的答复似乎假设我有一个包含对象混合的简单列表。事实并非如此。我正在寻找的是这样的:
Name        Address      Town
-----------------------------------------
Liz Buck House London
Angie Block House Berlin

然后切换到完全不同的东西:
Town       Population
------------------------------
London 123456
Swansea 65432

可能是我想得太复杂了....

最佳答案

首先定义一个DataTemplate

<DataTemplate x:Key="MyListTemplate">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock FontSize="14" Foreground="Black" Name="tbNombre" Padding="5">
<TextBlock.Text>
<Binding Path="Nombre"></Binding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Active}"
Value="False">
<Setter TargetName="tbNombre" Property="Foreground" Value="Silver" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>

之后,动态更改数据模板:
Dim template As DataTemplate = Application.Current.Resources("MyListTemplate")
MyList.ItemTemplate = template

关于WPF:是否可以创建多个 ListView.View 模板并在运行时动态选择一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1721154/

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