2011-09-07 44 views
0

好吧,我在這裏完全不知所措。我已經使用MVC模型綁定成功地使用了DataAnnotations屬性DisplayName,甚至使用WPF/Silverlight模型綁定,當然它工作得很好,但現在我在一個項目中被迫使用VB.NET 3.5 WinForms。DisplayName DataAnnotations在WinForms 3.5中不起作用DataGridView

我有一個Linq2Sql模型,我爲我的一個類創建了一個分類,並且包含一個MetadataType屬性指向一個元數據類。我向元數據類中的屬性添加了DisplayName屬性。然後我綁定我的datagridview與IQueryable(的mydatatype),但網格中的列名稱是屬性的名稱而不是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 

在我的倉庫類:

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

在我的演講類:

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

好的,所以我找到了解決我的問題。甚至沒有這樣想過,但是在WPF中,你會得到這種行爲,因爲它內置了模型綁定行爲。WinForms也有數據綁定,但不僅僅適用於你的。雖然我可以將datagridview綁定到運行時生成的linq2sql對象上,但是我已經完成了我所需要的工作,但是我需要在設計時做到這一點,所以我修改了我的MVP以在需要時使用ViewModel,並在運行時將數據網格綁定到該對象以使我的列名以我想要的方式顯示。 ViewModel連接到模型,並可以將實際值傳遞給它。

我在此基礎上博客這種做法,雖然我沒有完全實現他做了什麼: http://aviadezra.blogspot.com/2009/08/mvp-mvvm-winforms-data-binding.html

相關問題