0

データグリッドのバインドされた列に表示されるテキストを関数の出力にフォーマットするにはどうすればよいですか?

コード ビハインドに次のような関数があるとします。

Function Test(ByVal str As String) As String
    Return Left(str, 5)
End Function

そして、次のようなデータグリッド:

    <DataGrid Name="dg_Users" IsReadOnly="True" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="User ID" Binding="{Binding UserID}" />
            <DataGridTextColumn Header="Username" Binding="{Binding Username}" />
        </DataGrid.Columns>
    </DataGrid>

これは、StronglyTyped IList にバインドされています。(厳密に型指定されたリストに追加するためにループされた単純な SqlCeDataReader オブジェクトです):

Private Shared Function Map(Of T As New)(ByVal _Rdr As IDataReader) As IList(Of T)
    Try
        Dim _t As Type = GetType(T)
        Dim _en As New List(Of T)()
        Dim _ht As New Hashtable()
        Dim _props As PropertyInfo() = _t.GetProperties()
        Parallel.ForEach(_props, Sub(info)
                                     _ht(info.Name.ToUpper()) = info
                                 End Sub)
        While _Rdr.Read()
            Dim newObject As New T()
            For index As Integer = 0 To _Rdr.FieldCount - 1
                Dim info As PropertyInfo = DirectCast(_ht(_Rdr.GetName(index).ToUpper()), PropertyInfo)
                If (info IsNot Nothing) AndAlso info.CanWrite Then
                    info.SetValue(newObject, IsNull(Of Object)(_Rdr.GetValue(index), Nothing), Nothing)
                End If
            Next
            _en.Add(newObject)
        End While
        _Rdr.Close()
        Return _en
        _ht.Clear() : _en.Clear()
    Catch ex As Exception
        Return Nothing
    End Try
End Function

上記の関数Usernameを利用して列をフォーマットするにはどうすればよいですか?Test

4

1 に答える 1

2

タイプ(私が推測しているユーザー)の読み取り専用プロパティ(ゲッターのみ)にし、代わりにそれにバインドします。とても簡単になります。

于 2013-08-22T17:08:07.190 に答える