如何在WPF ListView中每行显示不同的控件类型
我正在WPF中重新编写.Net WinForm应用程序 我需要复制一个有3列的ListView控件如何在WPF ListView中每行显示不同的控件类型,wpf,listview,Wpf,Listview,我正在WPF中重新编写.Net WinForm应用程序 我需要复制一个有3列的ListView控件 第一列只是文本 第二列可以是图像,也可以是 按钮,或为空 第三列可以包含文本框、组合框、, DateTimePicker、NumericUpDown或复选框 此列表视图根据上面选择的内容刷新其内容(包括控件类型) 不幸的是,我是WPF的新手。我一直在研究WPF ListView和绑定过程。但我的直觉反应是,这不是一个有约束力的情景(尽管我很高兴被证明是错误的) 所以我的问题是WPF List
- 第一列只是文本李>
- 第二列可以是图像,也可以是 按钮,或为空李>
- 第三列可以包含文本框、组合框、, DateTimePicker、NumericUpDown或复选框李>
非常感谢,马特。看看
GridView
或DataGrid
。您需要手动指定列类型,而不是依赖自动生成的列
<ListView.View>
<GridView AllowsColumnReorder="False" x:Name="gvWFbatches">
<GridViewColumn Width="Auto">
<GridViewColumnHeader Content="Batch"/>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock TextWrapping="NoWrap" Text="{Binding Path=BatchName, Mode=OneWay}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="Auto">
<GridViewColumnHeader Content="QC"/>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IncQC, Mode=OneWay}" IsHitTestVisible="False" Focusable="False"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
也许对某人有用 我认为在这种情况下可以使用DataTemplateSelector。您应该定义自己的选择器
继承自类DataTemplateSelector,并将基于该项使用哪个模板的逻辑放在那里。然后将其设置为ListView的ItemTemplateSelecto
可以从中读取有关DataTemplateSelector的详细信息。您可以为每列使用不同的DataTemplate来显示所需的数据。使用这些列定义,第一列中的所有行将显示
TextBlock
,第二列中的所有行将显示复选框。OP的问题指出,在他或她的列表视图中,不同的行需要在一列中有不同的控件,这一点没有通过此答案解决。“取决于上面选择的内容”不清楚,OP在2年多的时间里没有任何评论或问题。