c# – Datagrid列可以在不同的行中包含不同类型的控件

c# – Datagrid列可以在不同的行中包含不同类型的控件,第1张

概述在 Wpf中,我可以创建一个数据网格,其中不同的行在同一列中包含不同类型的控件吗? 最简单的情况:数据网格有5列,2行,不关心4个第一列,在第5列: >第1行:它是一个文本框 >第2行:它是一个组合框. 谢谢! 您可以使用DataGridTemplateColumn结合几个触发器来实现此功能. 这是一个演示应用程序,它将DataGrid绑定到(字符串)控件类型列表.第一列只显示控件类型字符串,第二 在 Wpf中,我可以创建一个数据网格,其中不同的行在同一列中包含不同类型的控件吗?

最简单的情况:数据网格有5列,2行,不关心4个第一列,在第5列:

>第1行:它是一个文本框
>第2行:它是一个组合框.

谢谢!

解决方法 您可以使用DataGrIDTemplateColumn结合几个触发器来实现此功能.

这是一个演示应用程序,它将DataGrID绑定到(字符串)控件类型列表.第一列只显示控件类型字符串,第二列作用于相同的信息以显示相应的Control.您可能能够使xaml更简洁,但这是它的主旨:

XAML:

<Window x:Class="DataGrIDWithMultipleTypesPerColumn.MainWindow"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    title="MainWindow" Height="350" WIDth="525"><GrID>    <DataGrID ItemsSource="{Binding ControlTypes}"              autoGenerateColumns="False">        <DataGrID.Columns>        <DataGrIDTextColumn header="Control Type" Binding="{Binding}"/>            <DataGrIDTemplateColumn header="Actual Control">                <DataGrIDTemplateColumn.CellTemplate>                    <DataTemplate>                        <ContentControl>                            <ContentControl.Style>                                <Style targettype="ContentControl">                                    <Style.Triggers>                                        <DataTrigger Binding="{Binding}" Value="TextBox">                                            <Setter Property="ContentTemplate">                                                <Setter.Value>                                                    <DataTemplate>                                                        <TextBox Text="Default Text"/>                                                    </DataTemplate>                                                </Setter.Value>                                            </Setter>                                        </DataTrigger>                                        <DataTrigger Binding="{Binding}" Value="CheckBox">                                            <Setter Property="ContentTemplate">                                                <Setter.Value>                                                    <DataTemplate>                                                        <CheckBox Content="Check Box"/>                                                    </DataTemplate>                                                </Setter.Value>                                            </Setter>                                        </DataTrigger>                                        <DataTrigger Binding="{Binding}" Value="button">                                            <Setter Property="ContentTemplate">                                                <Setter.Value>                                                    <DataTemplate>                                                        <button Content="button"/>                                                    </DataTemplate>                                                </Setter.Value>                                            </Setter>                                        </DataTrigger>                                    </Style.Triggers>                                </Style>                            </ContentControl.Style>                        </ContentControl>                    </DataTemplate>                </DataGrIDTemplateColumn.CellTemplate>            </DataGrIDTemplateColumn>        </DataGrID.Columns>    </DataGrID></GrID>

代码隐藏和视图模型:

namespace DataGrIDWithMultipleTypesPerColumn{    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            this.DataContext = new viewmodel();        }    }    public class viewmodel    {        public ObservableCollection<string> ControlTypes        {            get;            private set;        }        public viewmodel()        {            ControlTypes = new ObservableCollection<string>() { "button","TextBox","CheckBox" };        }    }}
总结

以上是内存溢出为你收集整理的c# – Datagrid列可以在不同的行中包含不同类型的控件全部内容,希望文章能够帮你解决c# – Datagrid列可以在不同的行中包含不同类型的控件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存