2012-07-13 79 views
1

將一列在後面的代碼中的網格是很簡單:在代碼後面的WPF Grid中指定列添加順序?

col10 = new ColumnDefinition(); 
col10.SharedSizeGroup = "column1"; 

當您添加將其添加到網格,比如你有列A和B網格的最後一列,可以使用代碼以上和一個新的列(C),它被添加爲AB C.

是否可以像這樣設置它?

C A B

取而代之的是將其添加到前端?

感謝

回答

3

ColumnDefinitions就像任何其他的收集和支持的IList <>接口。 所以只需使用插入方法來控制添加的順序。

ColumnDefinition myColumn = new ColumnDefintion(); 
Grid myGrid = new Grid(); 
myGrid.ColumnDefinitions.Insert(0, myColumn); 
1

試試這個:

XAML文件:

<Window x:Class="DataGridAddColumn.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="30" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 

     <StackPanel Orientation="Horizontal"> 
      <ComboBox Name="cbWhere" Width="100" VerticalAlignment="Center"> 
       <ComboBoxItem>Front</ComboBoxItem> 
       <ComboBoxItem>End</ComboBoxItem> 
      </ComboBox> 

      <TextBlock Text="Name:" VerticalAlignment="Center" Margin="10,0,0,0" /> 
      <TextBox Name="tbName" MinWidth="100" VerticalAlignment="Center" /> 

      <Button Content="Create" VerticalAlignment="Center" Margin="10,0,0,0" Click="Button_Click" /> 

     </StackPanel> 

     <DataGrid Grid.Row="1" Name="grid" /> 
    </Grid> 
</Window> 

代碼隱藏:

using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace DataGridAddColumn 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void AddColumn(DataGrid grid, string name, int where) 
     { 
      if (where == 0) 
      { 
       grid.Columns.Insert(0, new DataGridTextColumn{Header = name}); 
      } 
      else 
      { 
       grid.Columns.Add(new DataGridTextColumn { Header = name }); 
      } 
     } 

     private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      AddColumn(grid, tbName.Text, cbWhere.SelectedIndex); 
     } 
    } 
} 
相關問題