您的位置:首页 > 其它

WPF中DataGrid使用初步

2012-12-04 21:13 381 查看
(1)自动生成列

<DataGrid AutoGenerateColumns="True" Name="datagrid" CanUserAddRows="False" MouseDoubleClick="datagrid_MouseDoubleClick" />

(2)取消自动生成列,手动绑定到相应字段

<DataGrid AutoGenerateColumns="False" Name="datagrid" CanUserAddRows="False" MouseDoubleClick="datagrid_MouseDoubleClick">
<DataGrid.Columns>
<DataGridTextColumn Header="编号" Binding="{Binding ID}"></DataGridTextColumn>
<DataGridTextColumn Header="公司" Binding="{Binding CompanyName}"></DataGridTextColumn>
<DataGridTextColumn Header="固定资产" Binding="{Binding FixedAssets}" Width ="*"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>

最后一列设置Width ="*"是为了取消空白列。

对应的后台代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
datagrid.ItemsSource = AccessDAL.OleDbHelper.ExecuteDataTable("SELECT * from Customers").DefaultView;
}

//双击DataGrid,显示相应信息

private void datagrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DataRowView row = datagrid.SelectedItem as DataRowView;
MessageBox.Show(row["id"].ToString());
}

//如果绑定到对象集合,如ObservableCollection<Employee>,代码如下:

ObservableCollection<Employee> col;
public EmployeeManage()
{
InitializeComponent();
col = new ObservableCollection<Employee>();
col.Add(new Employee() { Id = 1, Name = "Jim", Salary = 2500.50f });
col.Add(new Employee() { Id = 2, Name = "John", Salary = 2600.50f });
datagrid.ItemsSource = col;
}

private void datagrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
Employee emp=datagrid.SelectedItem as Employee;
MessageBox.Show(emp.Id.ToString());
}

(3)删除选中的多行数据

private void Delete_Click(object sender, RoutedEventArgs e)
{
for (int i = datagrid.SelectedItems.Count - 1; i >= 0; i--)
{
Good good = datagrid.SelectedItems[i] as Good;
goods.Remove(good);
}
}

(4)控制DataGrid是否显示滚动条

<DataGrid AutoGenerateColumns="True" Name="datagrid" CanUserAddRows="False" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Hidden" />

(5)设置DataGrid 鼠标移动改变鼠标所在行颜色样式

<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="LightBlue" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGray"/>
<Setter Property="Foreground" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>

(6)获取选中的当前行某列值

方法一:
DataRowView mySelectedElement = (DataRowView)dataGrid1.SelectedItem;
string result = mySelectedElement.Row[0]ToString();

方法二:
var a = this.dataGrid1.SelectedItem;
var b = a as DataRowView;
string result = b.Row[0].ToString();

(7)模版列使用

<DataGrid Margin="0,39,35,173" Name="dataGrid1" ItemsSource="{Binding}" AutoGenerateColumns="False" AlternatingRowBackground="Bisque" CellEditEnding="dgCust_CellEditEnding" RowEditEnding="dgCust_RowEditEnding"
Background="#88AEE9" SelectionChanged="dgCust_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=menu_item}" IsReadOnly="True"
Header="Item" Width="100" />

<DataGridTemplateColumn Header="Image" Width="80" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Height="40" Width="40" Source="{Binding menu_image}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Edit Row">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Edit" Click="EditButton_Click" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

(8)设置DataGridTextColumn的文本对齐方式

DataGrid里面存在着像DataGridColumnHeader、DataGrid、DataGridCell等相关控件的样式设置,例如让一个DataGrid里面某一列的控件内容居中显示,
 对于DataGridColumnHeader,设置样式如下:
<Style x:Key="ColumnHeaderStyle" TargetType="{x:Type DataGrid:DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
  普通控件设定样式使用CellStyle,或者属性即可,当设定DataGridTextColumn的文本显示时候,需要设定其ElementStyle,例如:
Style部分:
<Window.Resources>
<ResourceDictionary>
<Style x:Key="dgCell" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>

<Setter Property="VerticalAlignment" Value="Center"></Setter>
</Style>
</ResourceDictionary>
</Window.Resources>
调用部分:
<dg:DataGrid>
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Width="300" Binding="{Binding Path=Wid1}" ElementStyle="{StaticResource dgCell}">
</dg:DataGridTextColumn>
</dg:DataGrid.Columns>
</dg:DataGrid>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: