我有一个问题我正在制作一个 wpf 应用程序并使用数据网格控件来显示表格数据我正在通过 Xaml 在数据网格中添加一个单一的 Coloum 我的所有其他列将添加动态我的固定列出现在网格中的第一个位置我终于要来了
我怎样才能实现它
我的 Xaml 代码如下
提前致谢 沙山`
<my:DataGrid.Columns>
<my:DataGridTemplateColumn Header="Edit" Width="110" IsReadOnly="True" >
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="file:///D:\Projects\ChadCarpenter\AARFID\AARFID\Images\boardicon.png" />
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
</my:DataGrid.Columns>
And below are my C #` public void CreateDataTableheader() {
if (Utility.CheckGroupFamily == "Group")
{
dtAdultinfo.Columns.Add("Group Name", typeof(String));
}
dtAdultinfo.Columns.Add("Last Name", typeof(String));
dtAdultinfo.Columns.Add("First Name", typeof(String));
dtAdultinfo.Columns.Add("Phone", typeof(String));
dtAdultinfo.Columns.Add("CellPhone", typeof(String));
dtAdultinfo.Columns.Add("TowerID", typeof(String));
dtAdultinfo.Columns.Add("Room #", typeof(String));
dtAdultinfo.Columns.Add("IS primary", typeof(int));
Lst.ItemsSource = dtAdultinfo.DefaultView;
//DataGridColumn dc;
//DataGridTemplateColumn dgColumn = new DataGridTemplateColumn();
//DataTemplate dt = new DataTemplate();
//dgColumn.Header="Edit";
//dgColumn.Width = 110;
//dgColumn.IsReadOnly= true;
//dgColumn.CellTemplate = dt;
//Image img = new Image();
//BitmapImage logo=new BitmapImage();
//logo.UriSource =new Uri("file:///D:/Projects/ChadCarpenter/AARFID/AARFID/Images/boardicon.png");
DataGridTemplateColumn dgColumn = new DataGridTemplateColumn();
dgColumn.Header = "Edit";
FrameworkElementFactory factory1 = new FrameworkElementFactory(typeof(Image));
Binding b1 = new Binding("Picture");
b1.Mode = BindingMode.TwoWay;
factory1.SetValue(Image.SourceProperty, b1);
DataTemplate cellTemplate1 = new DataTemplate();
cellTemplate1.VisualTree = factory1;
dgColumn.CellTemplate = cellTemplate1;
Lst.Columns.Add(dgColumn);`
最佳答案
这可能会晚一些,但为了帮助其他人解决类似问题,在 AutoGeneratedColumns
事件中设置 DatagridColumn.DisplayIndex
就可以了。
假设带有 Header = "Edit"
的列是您的固定列并且您的 DataGrid
如下所示:
<DataGrid AutoGeneratedColumns="DataGrid_AutoGeneratedColumns">
<DataGrid.Columns>
<my:DataGrid.Columns>
<my:DataGridTemplateColumn Header="Edit">
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<... />
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
</my:DataGrid.Columns>
</DataGrid.Columns>
</DataGrid>
然后您可以通过它的标题找到所需的列并将其发送到最后一个位置:
private void DataGrid_AutoGeneratedColumns(object sender, EventArgs e)
{
var grid = (DataGrid)sender;
foreach (var item in grid.Columns)
{
if (item.Header.ToString() == "Edit")
{
item.DisplayIndex = grid.Columns.Count - 1;
break;
}
}
}
关于c# - 如何在datagrid wpf中设置列的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734824/