データグリッドのバインドされた列に表示されるテキストを関数の出力にフォーマットするにはどうすればよいですか?
コード ビハインドに次のような関数があるとします。
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