データベース(たとえば "CTY")からのコードをユーザーフレンドリーな説明( "City"など)に変換するコンバータクラス(IValueConverterの実装)を作成しました。私はXCeed WPF Datagridcontrolの1つの列でコンバーターを使用したいと思いますが、コンバーターを設定する必要があるプロパティーはわかりません。私はまた、スタイルを使用してDataCellに接続しようとしましたが、正しく動作しません。コンバータはすべてのセルではなく、1つの列にのみ適用する必要があるため、必要ではないと思います。DataGrid列にValueConverterを適用します。
カラムも自動生成されるため、実行時にそれを適用できればすばらしいでしょう!
私は、列のどのプロパティ私は(エクシード列は「バインディング」プロパティを持っているdoens'tにコンバータをapllyしなければならないか分からない。あなたたちは何か提案はありますか?
より多くの例やコード。のために要求された場合に提供することができます私は私の問題は、あなたのために少し明らかであると思います
EDIT:
これは私が私のXAMLファイルで使用するものです。
<utils:BudgettaireEntiteitConverter x:Key="BudgettaireEntiteitConverter" />
<xcdg:DataGridCollectionViewSource x:Key="GridViewSourceDefault"
Source="{Binding Converter={StaticResource BudgettaireEntiteitConverter}}">
<xcdg:DataGridCollectionViewSource.DetailDescriptions>
<lc:ActieOverzichtBudgettenDescription
RelationName="Budgetten"
AutoCreateDetailDescriptions="False"
AutoCreateForeignKeyDescriptions="False"
AutoCreateItemProperties="True"
Title="Budgetten" >
<lc:ActieOverzichtBudgettenDescription.StatFunctions>
<xcdg:SumFunction ResultPropertyName="SumOfBedragInBudget"
SourcePropertyName="BedragInBudget" />
<xcdg:SumFunction ResultPropertyName="SumOfBedragInAfwachting"
SourcePropertyName="BedragInAfwachting" />
</lc:ActieOverzichtBudgettenDescription.StatFunctions>
<lc:ActieOverzichtBudgettenDescription.DetailDescriptions>
<lc:ActieBudgetRegistratieSleutelsDescription RelationName="RegistratieSleutels"
AutoCreateDetailDescriptions="False"
AutoCreateForeignKeyDescriptions="False"
AutoCreateItemProperties="True"
Title="Registratiesleutels" />
</lc:ActieOverzichtBudgettenDescription.DetailDescriptions>
</lc:ActieOverzichtBudgettenDescription>
</xcdg:DataGridCollectionViewSource.DetailDescriptions>
</xcdg:DataGridCollectionViewSource>
<xcdg:DataGridControl x:Name="lsvActies"
TargetUpdated="OnListTargetUpdated"
ItemsSourceName="Acties"
IsRefreshCommandEnabled="False"
rf:XceedGridService.LoadUserSettings="True"
rf:XceedGridService.SettingsKeyName="ActieOverzichtGridKey"
rf:XceedGridService.ItemContextMenu="{StaticResource ActieContextMenu}">
<xcdg:DataGridControl.CommandBindings>
<CommandBinding Command="Delete" Executed="ExecuteDeleteItem" CanExecute="CanExecuteDeleteItem"/>
</xcdg:DataGridControl.CommandBindings>
</xcdg:DataGridControl>
これは私のコンバータです:
Public Class BudgettaireEntiteitConverter
Implements IValueConverter
Private hs As Hashtable = FillHashTable()
Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
If hs.ContainsKey(value)
Return hs(value).ToString()
Else
Return Nothing
End If
End Function
Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Throw New NotSupportedException("ConvertBack not supported!")
End Function
Function FillHashTable() As Hashtable
Dim hashtable As New Hashtable
Dim dataCache = New ReferentieDataCache
Dim budgettaireEntiteiten = dataCache.GetBudgettaireEntiteiten()
For Each budgettaireEntiteitRow As BudgettaireEntiteitRow In budgettaireEntiteiten
hashtable.Add(budgettaireEntiteitRow.BudgettaireEntiteit, budgettaireEntiteitRow.DisplayOmschrijving)
Next
Return hashtable
End Function
End Class
はEDIT2:
私はDataGridItemPropertyてみました(以下のXAMLを参照)が、私は、私はConverterクラスに入力しないと、グリッドがちょうどロードデバッグするとき変換されたデータではなく初期のデータと比較します。
<xcdg:DataGridCollectionViewSource.ItemProperties>
<xcdg:DataGridItemProperty Name="BudgettaireEntiteit" Converter="{StaticResource BudgettaireEntiteitConverter}" />
</xcdg:DataGridCollectionViewSource.ItemProperties>
私は存在しないフィールドを入力した場合、それはエラーがスローされますので、それは間違いなくBudgettaireEntiteitフィールドを知っています。今すぐ何もしません
データグリッドが作成され、データが割り当てられているコードの一部を表示できますか。 –
私のコードをいくつか追加しました。 ) –
私の頭に浮かべる最初のことは、可能であれば、データがグリッドに割り当てられている場所を見つけることができないように見えますが、フレームワークのどこかにあるので、列の自動生成を停止して、ビューに自分自身を追加することができます。このようにして、必要な列だけにコンバーターを追加することができます。 –