2010-09-17 99 views
3

我有一個問題即時作出一個WPF應用程序,並使用數據網格控件顯示錶格數據IM通過XAML添加單個柱子在數據網格和我所有的其他列將被添加動態我的固定列正值網格第一現在的位置,我想無論是要到來了如何設置列的位置在數據網格的WPF

我怎麼能achive它

我的XAML代碼是如下

由於提前 shashank`

  <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> 

而且下面是我的C#` 公共無效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);` 
+0

你可以顯示你用來創建動態列的代碼嗎? – ChrisF 2010-09-17 11:23:38

+0

我也嘗試通過代碼添加我的固定列後面..但它也不起作用 – Shashank 2010-09-17 13:09:56

+0

我可以知道您使用的.Net版本和Visual Studio版本嗎? – 2010-09-17 13:35:03

回答

2

這可能是晚,但爲了幫助他人在類似的問題,在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; 
     } 
    } 
} 
+0

作品像一個魅力,謝謝! – 2017-03-17 09:32:51

相關問題