wpf数据网格列 [英] wpf data grid columns

查看:74
本文介绍了wpf数据网格列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有三个问题



1.i选择了一个单元格但它选择了所有行



2.在单元格中输入内容并更改单元格以前的单元格它将是空的



3.如何在网格视图中使用组合框架



XAML



i have a three problems

1.i was select one cell but it selected all row

2.enter something in cell and to change cell the previous cell it will be empty

3.how to use combobox in grid view

XAML

<DataGrid AutoGenerateColumns="False" Background="LightGray" RowBackground="Orange" AlternatingRowremoved="LightBlue" 

              Height="290" HorizontalAlignment="Left" Margin="29,178,0,0" Name="dgrid_familyDetails" VerticalAlignment="Top" 

              Width="854" BeginningEdit="dgrid_familyDetails_BeginningEdit" FontSize="14">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" x:Name="Name1" Width="100"/>
            <DataGridTextColumn Header="Age" x:Name="Age1" Width="50"/>
            <DataGridComboBoxColumn Header="Marital Status" x:Name="Married" Width="85"/>
            <DataGridComboBoxColumn Header="Gender" x:Name="Gender"/>
            <DataGridTextColumn Header="Qualification" />
        </DataGrid.Columns>
    </DataGrid>





C#





C#

public List<string> _maritalStatus { get; set; }
    public List<string> _Gender { get; set; }
    public MainWindow()
    {
        InitializeComponent();

        DataTable dt = new DataTable();
        dgrid_familyDetails.ItemsSource = dt.DefaultView;
        dt.Rows.Add();
        _maritalStatus = new List<string>() { "Single", "Married" };
        _Gender = new List<string>() { "Male", "Female" };
        Married.ItemsSource = _maritalStatus;
        Gender.ItemsSource = _Gender;
    }





请给出解决方案....



谢谢



Please give a solution....

thanks

推荐答案

DataGrid中的ComboBox

我遇到了一个如何在数据网格中显示组合框的问题。它与我们在这里看到的ListView中显示它没什么不同。同样,我们需要首先创建一个嵌套数据结构。这是我们的数据类。





代码:

ComboBox in DataGrid
I came across a question that how to display combo box in Data Grid. It is not different than displaying it in ListView we saw here. Similarly we have need to make a nested data structure first. Here is our data class.


code:
public class State
{
    public string Name
    { get; set; }

    public string TimeZone
    { get; set; }

    public string Capital
    { get; set; }

    public ObservableCollection<string> Cities
    { get; set; }
}





然后我们用一些数据填充它。

代码:



Then we populate it with some data.
Code:

states.Add(new State()
{
    Name = "Maryland",
    Capital = "Annapolis",
    TimeZone = "Eastern",
    Cities = new ObservableCollection<string>() { "Frederick", "Baltimore", "Rockville"}
});

states.Add(new State()
{
    Name = "Taxes",
    Capital = "Austin",
    TimeZone = "Central",
    Cities = new ObservableCollection<string>() { "Houston", "Dallas", "San Antonio" }
});

states.Add(new State()
{
    Name = "Utah",
    Capital = "Salt Lake City",
    TimeZone = "Mountain",
    Cities = new ObservableCollection<string>() { "West Valley City", "Provo", "West Jordon" }
});

states.Add(new State()
{
    Name = "California",
    Capital = "Sacramento",
    TimeZone = "Pacific",
    Cities = new ObservableCollection<string>() { "Los Angeles", "San Fransisco", "San Diego" }
});





然后我们定义DataGridTemplateColumn并为我们想要显示组合框的列定义数据模板。这是一段XAML代码。

代码:



Then we define DataGridTemplateColumn and define data template for our column where we want to display the combo box. Here is a piece of XAML code for this.
Code:

<DataGridTemplateColumn Header="Cities" Width="*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox Margin="2" ItemsSource="{Binding Cities}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>





其余代码非常简单。这是我们完整的程序C#代码。

代码:



Rest of the code is very simple. Here is our complete C# code of the program.
Code:

using System.Collections.ObjectModel;
using System.Windows;

namespace WpfDataGridCombo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private ObservableCollection<State> states = new ObservableCollection<State>();

        public MainWindow()
        {
            InitializeComponent();

            states.Add(new State()
            {
                Name = "Maryland",
                Capital = "Annapolis",
                TimeZone = "Eastern",
                Cities = new ObservableCollection<string>() { "Frederick", "Baltimore", "Rockville"}
            });

            states.Add(new State()
            {
                Name = "Taxes",
                Capital = "Austin",
                TimeZone = "Central",
                Cities = new ObservableCollection<string>() { "Houston", "Dallas", "San Antonio" }
            });

            states.Add(new State()
            {
                Name = "Utah",
                Capital = "Salt Lake City",
                TimeZone = "Mountain",
                Cities = new ObservableCollection<string>() { "West Valley City", "Provo", "West Jordon" }
            });

            states.Add(new State()
            {
                Name = "California",
                Capital = "Sacramento",
                TimeZone = "Pacific",
                Cities = new ObservableCollection<string>() { "Los Angeles", "San Fransisco", "San Diego" }
            });

            DataContext = states;
        }
    }

    public class State
    {
        public string Name
        { get; set; }

        public string TimeZone
        { get; set; }

        public string Capital
        { get; set; }

        public ObservableCollection<string> Cities
        { get; set; }
    }
}









这是我们程序的完整XAML代码。

代码:

< window x:class =WpfDataGridCombo.MainWindowxmlns:x =#unknown>

xmlns = http://schemas.microsoft.com/winfx/2006/xaml/presentation

xmlns:x =http://schemas.microsoft.com/winfx/2006/xaml

Title =Daga Grid中的组合框高度=300宽度=400>

< grid>

< datagrid margin =5itemssource ={Binding}autogeneratecolumns =False>

< datagrid.columns>

< datagridtextcolumn header =Namebinding ={Binding Name}>

< datagridtextcolumn header =Capitalbinding ={Binding Capital}>

< datagridtextcolumn header =Time区域binding ={Binding TimeZone}>

< datagridtemplatecolumn header =Citieswidth =*>

< datagridtemplatecolumn.celltemplate>

< datatemplate>

< combobox margin =2itemssource ={Binding Cities}>















代码





Here is complete XAML code of our program.
Code:
<window x:class="WpfDataGridCombo.MainWindow" xmlns:x="#unknown">
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Combo Box in Daga Grid" Height="300" Width="400">
<grid>
<datagrid margin="5" itemssource="{Binding}" autogeneratecolumns="False">
<datagrid.columns>
<datagridtextcolumn header="Name" binding="{Binding Name}">
<datagridtextcolumn header="Capital" binding="{Binding Capital}">
<datagridtextcolumn header="Time Zone" binding="{Binding TimeZone}">
<datagridtemplatecolumn header="Cities" width="*">
<datagridtemplatecolumn.celltemplate>
<datatemplate>
<combobox margin="2" itemssource="{Binding Cities}">







Code


这篇关于wpf数据网格列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆