БУ ЯХ !!!
Я посмотрел примеры здесь, откопал несколько ссылок из других постов здесь и нашел ответ ... IValueConverter ... интерфейс, который можно использовать с WPF, который будет преобразовывать значения в точке привязки , Сначала это немного сложно собрать, но не так сложно.
Первым шагом является создание простого класса поиска или конвертера, который реализует интерфейс IValueConverter. Для моего решения я сделал это:
Namespace TCRConverters
Public Class SetIdToNameConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Dim taCardSet As New TCRTableAdapters.CardSetTableAdapter
Return taCardSet.GetDataById(DirectCast(value, Integer)).Item(0).Name
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Return Nothing
End Function
End Class
End Namespace
Примечание. Я не использую метод ConvertBack, но это требуется интерфейсом.
Оттуда вам нужно добавить ссылку на пространство имен в разделе заголовка XAML:
<Window x:Class="Main" Loaded="Main_Loaded"
// Standard references here...
xmlns:c="clr-namespace:TCR_Editor.TCRConverters"
Title="TCR Editor" Height="728" Width="1135" Name="Main">
Затем в разделе Windows.Resources вы можете ссылаться на конвертер, и в моем случае я создал статическую ссылку на CollectionViewSource, который будет хранить данные:
<Window.Resources>
<CollectionViewSource Source="{Binding Source={x:Static Application.Current}, Path=CardDetails}" x:Key="CardDetails">
</CollectionViewSource>
<c:SetIdToNameConverter x:Key="SetConverter"/>
</Window.Resources>
Затем, наконец, в ListView, который был частью первоначальной проблемы, вы добавляете ссылку на конвертер:
<ListView Canvas.Left="402" Canvas.Top="480" Height="78" ItemsSource="{Binding}" Name="lsvViewEditCardPrint" Width="419">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=IdCst, Converter={StaticResource SetConverter}}">Set</GridViewColumn>
// Other Columns here...
</GridView>
</ListView.View>
</ListView>
Итак, самое замечательное в том, что когда я запускаю событие с идентификатором карты, все, что мне нужно сделать, это сбросить настройку CollectionViewSource ...
DirectCast(Me.FindResource("CardDetails"), CollectionViewSource).Source = taCardDetails.GetDataById(CardId)
... и все обязательные элементы WPF делают все остальное!
Приятно то, что я могу легко создавать другие конвертеры, добавлять их в различные шаблоны данных или столбцы в других местах приложения, и как только я получу все данные в само приложение WPF, преобразования можно выполнять без в базу данных.