DisplayName DataAnnotations не работает в WinForms 3.5 DataGridView - PullRequest
0 голосов
/ 07 сентября 2011

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

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

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

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

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 Ответ

1 голос
/ 09 сентября 2011

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

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

...