BOO YAH!!!
I looked at the samples here, dug off a few of the references from other posts here, and found the answer... IValueConverter ... an interface that can be used with WPF that will convert values at the point of binding. It is a little tricky to put together at first, but not that difficult.
The first step is to create a simple lookup or converter class that implements the IValueConverter interface. For my solution, I did this:
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
Note: I am not utilizing the ConvertBack method, but it is required by the interface.
From there you need to add a reference to the namespace in your XAML header section:
<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">
Then in your Windows.Resources section, you can reference the converter, and in my case, I created a static reference to the CollectionViewSource that would be storing the data:
<Window.Resources>
<CollectionViewSource Source="{Binding Source={x:Static Application.Current}, Path=CardDetails}" x:Key="CardDetails">
</CollectionViewSource>
<c:SetIdToNameConverter x:Key="SetConverter"/>
</Window.Resources>
Then finally, in the ListView that was part of the initial problem, you add the converter reference:
<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>
So the great part now is that when I trigger an event that has a Card Id, all I need to do is reset set the CollectionViewSource...
DirectCast(Me.FindResource("CardDetails"), CollectionViewSource).Source = taCardDetails.GetDataById(CardId)
...and all the binding elements of WPF do the rest!
The nice thing about is is that I can easily create other converters, add them to various DataTemplates or columns elsewhere in the application, and once I get all of the data into the WPF app itself, the conversions can be conducted without going to the database.