2011-09-07 2 views
0

Хорошо, я здесь совершенно не понимаю. Я использовал атрибут DataAnnotations DisplayName успешно, используя привязку модели MVC, и даже с привязкой модели WPF/Silverlight, и, конечно, это работает отлично, но теперь я нахожусь в проекте, который я вынужден использовать VB.NET 3.5 WinForms.DisplayName DataAnnotations не работает в WinForms 3.5 DataGridView

У меня есть модель Linq2Sql, и я создал частичный класс для одного из моих классов и включил атрибут MetadataType, чтобы указать класс метаданных. Я добавил атрибут DisplayName к свойству в классе метаданных. Затем я привязываю свой datagridview с помощью IQueryable (mydatatype), но имя столбца в сетке является именем Property, а не DisplayName.

Я что-то упустил? Есть ли что-то еще, что мне нужно сделать, чтобы заставить datagridview использовать DisplayName?

В моей модели класса:

Imports System.ComponentModel 
Imports System.ComponentModel.DataAnnotations 

<MetadataType(GetType(vwREVIEW_ECRMetadata))> _ 
Partial Class vwREVIEW_ECR 
    Public Sub TestMethod() 

    End Sub 
End Class 

Public Class vwREVIEW_ECRMetadata 

    Private _ECRNumber As String 
    <DisplayName("ECR #")> _ 
    Public Property ECRNumber() As String 
     Get 
      Return _ECRNumber 
     End Get 
     Set(ByVal value As String) 
      _ECRNumber = value 
     End Set 
    End Property 

End Class 

В моем Repository классе:

Public Function GetAllECRsForLookup() As IQueryable(Of vwREVIEW_ECR) 
    Return db.vwREVIEW_ECRs 
End Function 

В моем Presenter классе:

Public Sub GetData() 
    view.FillData(model.GetFilteredECRsForLookup()) 
End Sub 

На мой взгляд:

Public Sub FillData(ByVal data As System.Linq.IQueryable(Of vwREVIEW_ECR)) Implements ILookupECRView.FillData 
    Me.uxECRData.DataSource = data 
End Sub 

Любая помощь будет принята с благодарностью! Спасибо

ответ

1

Хорошо, поэтому я нашел решение своей проблемы. Даже не думал об этом так, но в ASP.NET & WPF, вы получаете это поведение из-за встроенного поведения привязки модели. У WinForms также есть привязка данных, но не только для вашего. Хотя я мог бы «привязать» мой datagridview к моему созданному объекту linq2sql во время выполнения, который бы выполнил то, что мне было нужно, мне нужно было сделать это во время разработки, поэтому вместо этого я изменил свой MVP, чтобы использовать ViewModels там, где это необходимо, и привязать datagrid к этому объекту во время выполнения, чтобы мои имена столбцов выглядели так, как я хочу. ViewModel подключается к модели и может передавать ему реальные значения.

я на основе этого подхода на этом блоге, хотя я не в полной мере реализовать то, что он сделал: http://aviadezra.blogspot.com/2009/08/mvp-mvvm-winforms-data-binding.html

Смежные вопросы