WPF C# Make ListBox items have a different value than item text

In XAML :

<ListBox x:Name=”lstboxCabinet” HorizontalAlignment=”Center” Height=”156″ Margin=”58,68,530,0″ VerticalAlignment=”Top” Width=”426″
DisplayMemberPath=”Text”
ItemsSource=”{Binding}”
SelectedValuePath=”id”
/>

 

 

 

In C#

 

Define Custom Class:

public class ListBoxValueText
{
public string Value { get; set; }
public string Text { get; set; }
}

 

Populate the Listbox:

 

DataTable dataTable = ******Your Database Table which contains data*****

lstboxCabinet.Items.Clear();
List<ListBoxValueText> data = new List<ListBoxValueText>();
foreach (DataRow row in dataTable.Rows)
{
data.Add(new ListBoxValueText() { Value = row[“id”].ToString(), Text = row[“name”].ToString() });
}
lstboxCabinet.DataContext = data;

 

Callback Assigned selected value to a string:

 

string selectedCabinet = (lstboxCabinet.SelectedItem as ListBoxValueText).Value;

Leave a comment