我认为对WPF来说这应该是一件简单的事情,但我无法让它发挥作用...... 我的类上有一个int属性(Divisions),我想将它绑定到DataGrid列。
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Number of Divisions" Binding="{Binding Path=Divisions, StringFormat={}\{0:N0\}}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
但是,它没有显示出来。 我也尝试过这段代码,它也不适用于我:
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Divisions" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Divisions, StringFormat=C}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
为了测试purpse,如果我向此类添加一个字符串属性以返回Divisions的字符串值,它就可以正常工作。那么,这里有什么不对?
答案 0 :(得分:4)
有趣......我能够使用以下(在VS 2010,.NET 4中)示例轻松地完成工作。
我的网格定义:
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Number of Divisions"
Binding="{Binding Path=Divisions, StringFormat={}\{0:N0\}}"
IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
设置数据背景:
this.DataContext = new List<MyItem>() {
new MyItem() { Divisions = 1 },
new MyItem() { Divisions = 2 },
new MyItem() { Divisions = 3 },
new MyItem() { Divisions = 4 },
new MyItem() { Divisions = 5 }
};
我的数据类定义:
public class MyItem {
public int Divisions { get; set; }
}
希望这有帮助!
答案 1 :(得分:0)
我不相信你正确地指定了你的StringFormats。
在第一个示例中,尝试删除转义字符,如下所示:
StringFormat={}{0:N0}
在第二个:
StringFormat={}{0:C}