我的应用程序在MVVM中。我有一个Telerik RadGridview,其中2列是Databound,我必须使用RowNumbers动态生成第三列。 这是我的代码。我在第三个(动态生成的)列中获取(集合)。其他2列很好。请帮帮我。
XAML:
< telerik: RadGridView Name = "TestGridView"
ItemsSource = "{Binding TestListView}"
AutoGenerateColumns = "False" >
< telerik: RadGridView.Columns >
< telerik: GridViewColumn Header = "RowCount" >
< telerik: GridViewColumn.CellTemplate >
< DataTemplate >
< StackPanel >
< TextBlock Text = "{Binding TestRowNumber}" / >
< /StackPanel>
</DataTemplate >
< /telerik:GridViewColumn.CellTemplate>
</telerik: GridViewColumn >
< telerik: GridViewDataColumn DataMemberBinding = "{Binding FirstName}"
Header = " Name" / >
< telerik: GridViewDataColumn DataMemberBinding = "{Binding Salary}"
Header = "Salary" / >
< /telerik:RadGridView.Columns>
</telerik: RadGridView >
ViewModel:
public void Testupdate() {
RadObservableCollection < int > rno = new RadObservableCollection < int > ();
for (int i = 1; i <= TestList.Count; i++) {
rno.Add(i);
}
TestRowNumber = rno;
}
private RadObservableCollection < int > _testRowNumber;
public RadObservableCollection < int > TestRowNumber {
get {
return _testRowNumber;
}
set {
_testRowNumber = value;
OnPropertyChanged();
}
}
&#13;
}
它在rno中显示正确的计数,项目为1到6.但是当在网格上显示时,它显示(集合)。我无法追查我错在哪里。请纠正我。
谢谢。
答案 0 :(得分:1)
名为TestRowNumber的属性定义为RadObservableCollection<int>
根据你的代码,这个系列被绑定到TestBlock的文本&#39;属性。在绑定集合期间,ToString()方法被调用,你得到你所看到的。假设FirstName和Salary是Employee类的属性,您可以执行以下操作:
class Employee
{
public int Index { get; set; }
public string Name { get; set; }
public double Salary { get; set; }
}
class ViewModel
{
private int imployeeIndex = 1;
public ObservableCollection<Employee> Employees { get; private set; }
public ViewModel()
{
Employees = new ObservableCollection<Employee>();
for (int i = 0; i < 10; i++)
AddNewEmployee("Name" + i, i * 1000);
}
public void AddNewEmployee(string name, double salary)
{
Employees.Add(new Employee { Index = imployeeIndex++, Name = name, Salary = salary });
}
}
<telerik:RadGridView ItemsSource= "{Binding Employees}" AutoGenerateColumns = "False" >
<telerik:RadGridView.DataContext>
<local:ViewModel/>
</telerik:RadGridView.DataContext>
<telerik:RadGridView.Columns>
<telerik:GridViewColumn Header = "RowCount" >
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text = "{Binding Index}" />
</DataTemplate >
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn >
<telerik:GridViewDataColumn DataMemberBinding = "{Binding Name}" Header = "Name" />
<telerik:GridViewDataColumn DataMemberBinding = "{Binding Salary}" Header = "Salary" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>