wpf数据网格列 [英] wpf data grid columns
问题描述
我有三个问题
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屋!