从代码隐藏格式化DataGridTextColumn

时间:2014-05-10 16:39:09

标签: c# wpf code-behind string.format datagridtextcolumn

也许,我认为,事情太简单了。 我有一个数据网格,从后面的代码动态添加列。这有效。 然后我有整数值的列,我希望在列中看到右对齐,但它失败了。我的代码是:

    public List<List<int>> IntegerData { get; set; }................

            DataGridTextColumn textC = new DataGridTextColumn();
            textC.Header = ("Column");
            textC.Binding = new Binding(string.Format("[{0}]", i));    
            textC.Binding.StringFormat = "00000"; 

最后我有类似的东西:

            myDataGrid.Itemssource = IntegerData

使用textC.Binding.String.Format问题是:(首先:看起来,stringFormat-LIne正确地重载了​​前一行)

格式&#34; 0&#34;给出一个整数&#34; 1&#34; &#34; 2&#34;,这是正确的。

格式&#34; 00000&#34;给出&#34; 00001&#34; &#34; 00002&#34; &#34; 00003&#34;这对于String-Format是正确的,但不是,我想要的

BUT:

格式&#34; ######&#34;也给出了&#34; 1&#34; &#34; 2&#34; ..等等(左对齐,没有前导空白)

由于我希望(或希望)的格式规则,#####是所描述的占位符,结果是&#34; bbbb1&#34; ,&#34; bbbb2&#34;右对齐。 (b这里是空白的!)

所以Binding似乎正确处理&#34; 00000&#34;格式,但不是&#34; ######&#34;格式。 有没有人对这个想法有任何想法或经验? (我在互联网上发现的所有其他绑定都要复杂得多)

1 个答案:

答案 0 :(得分:4)

您可以通过创建样式而不是格式化单元格中的文本来解决您的问题。

首先,创建一个样式:

Style style = new Style(typeof(DataGridCell));
style.Setters.Add(new Setter(HorizontalAlignmentProperty, HorizontalAlignment.Right));

然后将样式分配给列

textC.CellStyle = style;