2013-12-10 30 views
4

我試圖找出如何更改代碼的自動生成的列的文本對齊方式。如何更改Autogeneratedcolumn文本對齊

Private Sub dgBook_AutoGeneratingColumn(sender As System.Object, e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles dgBook.AutoGeneratingColumn 
     If e.PropertyType = GetType(DateTime) Then 
      Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn) 
      If dataGridTextColumn IsNot Nothing Then 
       dataGridTextColumn.Binding.StringFormat = "{0:d}" 
      End If 
     End If 

     If e.PropertyName = "Amount" Then 
      Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn) 
      If dataGridTextColumn IsNot Nothing Then 
       dataGridTextColumn.Binding.StringFormat = "{0:#,##0.00;(#,##0.00)}" 
       'I tried the next line for testing but it did not work 
       dataGridTextColumn.SetValue(TextBox.TextAlignmentProperty, TextAlignment.Center) 
      End If 
     End If 
    End Sub 
+0

試着改變細胞的風格 – atomaras

+0

@atomaras我不知道我會怎麼做,要改變對齊。任何代碼示例? – donL

回答

2

所以我落得這樣做在XAML WPF代碼是建立一個風格

<Window.Resources> 
    <Style TargetType="DataGridCell" x:Key="rightAlignCell"> 
     <Setter Property="HorizontalAlignment" Value="Right"></Setter> 
    </Style> 
</Window.Resources> 

然後我的單元格樣式設置爲風格的代碼背後。

Private Sub datagrid1_AutoGeneratingColumn(sender As System.Object, e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles datagrid1.AutoGeneratingColumn 
    If e.PropertyName = "Amount" Then 
     Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn) 
     If dataGridTextColumn IsNot Nothing Then 
      dataGridTextColumn.Binding.StringFormat = "{0:#,##0.00;(#,##0.00)}" 
     End If 
     e.Column.CellStyle = TryCast(FindResource("rightAlignCell"), Style) 
    End If 
end sub 
+0

這是偉大的,但我不得不更換'FindResource( 「rightAlignCell」)'和'DirectCast(發件人,數據網格).FindResource( 「rightAlignCell」)',使其工作。 – Naucle

1
+0

我想弄清楚如何通過代碼設置值作爲列自動生成。 – donL

+0

我試過:'dataGridTextColumn.SetValue(TextBox.TextAlignmentProperty,TextAlignment.Center)'但它沒有工作。 – donL

0

我一直在嘗試自己做幾天,但我需要/想要一個純粹代碼隱藏的解決方案。通過大量的試驗和錯誤,我終於在不同的地方找到了幾件不同的東西,我可以把它們放在一起按照我想要的方式排列。

我知道這是C#和原來的問題是VB目的,但也許它會解析了不夠好。

這裏是爲我工作這麼旁邊的人一起去會不會有工作得這麼辛苦:

首先,我建立了一個樣式右對齊一列的內容對WPF的DataGrid

Style rightStyle = new Style { TargetType = typeof(DataGridCell) }; 
style.Setters.Add(new Setter(Control.HorizontalAlignmentProperty, HorizontalAlignment.Right)); 

然後我設置CellStyle到我想要右對齊的列定義的樣式,

dataGridTextColumn.CellStyle = style; 

就像一切,這很簡單......一旦你知道其中 stinkin'簡單的事情(s)你後。

當然這並可以調整到居中對齊或左等

我的意思不是邀功對於這一點,我只用了別人的代碼張貼了再重新組裝的各個部分。我只是終於對網站提供了一些小小的貢獻,這對我自己努力弄清楚這個.NET的東西是非常有幫助的,所以我想提供它。