Как это началось?
Я хотел добавить в radGridView два столбца, которые не входят в коллекцию бизнес-объектов. В частности, NewUrl и NewIdOnFilehost. :)
Так что я пытался сделать?
Я положил это в сетку
radGridViewReuploadStatus.ItemsSource = FileHostings.Filesonic.getdAllDeletedLinks();
Затем я добавил их новые столбцы
<telerik:GridViewColumn Header="New F.H.Id" UniqueName="NewFilehostId" Width="*"></telerik:GridViewColumn>
<telerik:GridViewColumn Header="New URL" UniqueName="NewUrl" Width="*"></telerik:GridViewColumn>
Так в чем же проблема?
radGridViewReuploadStatus.Rows не существует.
Я не знаю, почему они не добавили его в wpf radGridView, это в его версии aspx. Мне удалось получить строки с помощью getChildsOfType, но это явно не идеальный способ.
Что я сделал дальше?
class dlExtended : DownloadLink {
public string NewUrl { get; set; }
public string NewIdOnFilehost { get; set; }
}
Наконец-то ПРОБЛЕМА - чего я не понимаю
Как мне сделать dlExtended из DownloadLink? (я знаю, что это неправильное название соглашения, это только для примера :))
И как мне составить список dlExtended из коллекции DownloadLink? Должен быть лучший способ, чем использовать foreach!
Теперь я, вероятно, делаю это неправильно
Так что теперь я должен сделать конструктор и установить КАЖДОЕ свойство dlExneded в соответствии с переданным в переданном DownloadLink?!
Ну, может быть, это можно сделать с помощью отражения, как это
public DownloadLinkExtended(DownloadLink origDl){
PropertyInfo[] myObjectProperties = origDl.GetType().GetProperties(); //BindingFlags.Public | BindingFlags.NonPublic
foreach (PropertyInfo pi in myObjectProperties)
{
if (pi.GetValue(origDl, null) != null)
{
pi.SetValue(this, pi.GetValue(origDl, null), null);
}
}
}
Ну, это глупо. Так что же я не получу при расширении класса и добавлении в него новых свойств?
Я знаю, что классы EF4 являются частичными, и я могу добавить к ним свойства просто через частичный класс, но я хочу, чтобы они были только для сетки, а не где-либо еще.