WPF – Combobox con binding a database e visualizzazione multicampi

Molto spesso capita di dover utilizzare all’interno di una maschera con un binding su una tabella (tipo TabAcquisti) una combobox con dei dati presenti in una tabella collegata (ad esempioTabClienti), ove la necessità è quella di includere all’interno della visualizzazione più colonne (per esempio ‘Cognome Nome’) mantenendo l’ID collegato ad un campo della tabella a cui è collegata la maschera.

Per fare ciò, mi sono avvalso del seguente codice:

<Window.Resources>
...  
   <CollectionViewSource x:Key="tab_ClientiViewSource" d:DesignSource="{d:DesignInstance {x:Type Models:Tab_Clienti}, CreateList=True}"/>
...
</Window.Resources>
...
<ComboBox x:Name="clienteComboBox" Grid.Column="3" HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="4" VerticalAlignment="Top" Width="288"
          SelectedValuePath="IDCliente" SelectedValue="{Binding IDCliente}" ItemsSource="{Binding Source={StaticResource tab_ClientiViewSource}}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock DataContext="{Binding}">
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{}{0}, {1}">
                                <Binding Path="Cognome"/>
                                <Binding Path="Nome"/>
                            </MultiBinding>
                        </TextBlock.Text>
                    </TextBlock>
                </DataTemplate>
            </ComboBox.ItemTemplate>
</ComboBox>

Ovviamente nel code behind è necessario implementare tutto quanto serve per popolare la tabella Clienti.

...
dBEntities db = new dBEntities(); 
...
CollectionViewSource tab_ClientiViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("tab_ClientiViewSource")));
...
tab_ClientiViewSource.Source = db.Tab_Clienti.ToList();
...

DownloadR  Scarica gli snippet…

 


 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Non sono una macchina... *