Я написал класс конвертера (реализующий IValueConverter), который преобразует код, который поступает из базы данных (например, «CTY») в более удобное для пользователя описание (например, «Город»). Я хочу использовать конвертер на одном столбце в моем XCeed WPF Datagridcontrol, но я не знаю, к какому свойству я должен установить конвертер. Я также попытался прикрепить его к DataCell с использованием стиля, но он не будет работать должным образом, и я думаю, что это также не обязательно, поскольку конвертер должен применяться только к одному столбцу, а не к каждой ячейке.Применить ValueConverter в столбце DataGrid
Столбцы также автогенерируются, поэтому, если бы я мог применить их во время выполнения, это было бы потрясающе!
Я не знаю, какое свойство колонки я должен aplly конвертер к (Колонный Xceed doens't имеют свойство «Binding». Есть ли у вас, ребята, есть какие-то предложения?
Больше примеров или кода . могут быть предоставлены, если просили, я надеюсь, что моя проблема немного ясно для вас
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 ниже), но когда я отладки не входить в класс конвертер и сетки просто загружает с исходными данными, а не с преобразованными данными.
<xcdg:DataGridCollectionViewSource.ItemProperties>
<xcdg:DataGridItemProperty Name="BudgettaireEntiteit" Converter="{StaticResource BudgettaireEntiteitConverter}" />
</xcdg:DataGridCollectionViewSource.ItemProperties>
Это, безусловно, знает, поле BudgettaireEntiteit, потому что если я ввожу в поле, которое не существует, он выдает ошибку. Теперь он просто ничего не делает
Можете ли вы показать немного кода, в котором создается датадайд и данные назначены. –
Я добавил несколько кода. Я не могу найти, где данные привязаны к сетке, так как это где-то в рамках, и я не реализовал эту часть, надеюсь, что вы поймете;) –
Первое, что приходит мне на ум, это то, что, если возможно, вы можете остановить автоматическое создание столбцов и добавить их в представление. Таким образом, вы можете добавлять конвертеры только в нужные столбцы. –