如何解决如何在Silverlight DataGrid列中格式化数字或文本?
| 你好 我有自动生成列的DataGrid。有些列是字符串,有些是整数,有些是双精度型。 如何设置每列的显示格式? (Silverlight 4) 顺便说一句,我读了一些建议来赶上AutoGenerating
事件并放这样的东西
private void dataGrid_AutoGeneratingColumn(object sender,DataGridAutoGeneratingColumnEventArgs e)
{
e.Column.Format=\"N0\";
}
但是e.Column.Format
不存在!
解决方法
引用此站点,我认为这是您要查找的内容,它应与Toolkit控件一起使用,而不要与telerik控件一起使用。
干杯
http://www.telerik.com/community/forums/silverlight/gridview/how-to-format-autogenic-columns.aspx
void gridView_AutoGeneratingColumn(object sender,DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(DateTime))
{
DataGridBoundColumn obj = e.Column as DataGridBoundColumn;
if (obj != null && obj.Binding != null)
obj.Binding.StringFormat = \"{0:d}\";
}
}
,更新:*使用MVVM,绑定列表,防止自动生成列,然后使用数据模板自定义单元模板(还将为您提供在列上显示内容的方式以及方式的更多灵活性),然后格式化文本块文本。
public partial class MainPage : UserControl,INotifyPropertyChanged
{
private ObservableCollection<CustomClass> _myList;
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<CustomClass> MyList
{
get { return _myList ?? (_myList = new ObservableCollection<CustomClass>()); }
set
{
_myList = value;
RaisePropertyChanged(\"MyList\");
}
}
protected void RaisePropertyChanged(string propertyname)
{
var handler = PropertyChanged;
if (handler != null)
handler(this,new PropertyChangedEventArgs(propertyname));
}
public MainPage()
{
InitializeComponent();
this.DataContext = this;
MyList.Add(new CustomClass() { PropertyToBeWatched = \"12\"});
MyList.Add(new CustomClass() { PropertyToBeWatched = \"23\" });
MyList.Add(new CustomClass() { PropertyToBeWatched = \"24\" });
MyList.Add(new CustomClass() { PropertyToBeWatched = \"25\" });
}
}
XAML:
<sdk:DataGrid ItemsSource=\"{Binding MyList}\" RowStyle=\"{StaticResource Style1}\" AutoGenerateColumns=\"False\">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text=\"{Binding SomeEntity,StringFormat=c}\" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTextColumn Binding=\"{Binding PropertyToBeWatched}\" Header=\"Property1\"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
希望这可以帮助。
,我不知道是否知道MVVM模式。使用它的方法,您可以为要绑定到DataGrid的项创建其他类(ViewModel
)。
例如,假设您有一个课程:
public class MyObject
{
public int Value1 { get; set; }
public double Value2 { get; set; }
public string Value3 { get; set; }
}
因此您可以像这样创建一个类MyObjectViewModel:
public class MyObjectViewModel
{
private MyObject _object;
public MyObjectViewModel(MyObject obj)
{
_object = obj;
}
public string Value1
{
get
{
return _object.Value1.ToString() //format for int
}
}
public string Value2
{
get
{
return _object.Value2.ToString() //format for double
}
}
public string Value3
{
get
{
return _object.Value3
}
}
}
然后在进行数据绑定之前,您可以将ѭ9collection的集合转换为ѭ10collection的集合并绑定此集合。这样,您可以随意设置属性格式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。