Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    710

    [WPF] Combobox MultiBinding: MultiConverter richiamato due volte, non viene visualizzato il valore selezionato

    Buonasera,
    in una colonna del mio DataGrid ho inserito una TextBlock per visualizzare il valore ed una ComboBox for modificare il valore della cella.


    Quando click sulla cella per modificare il valore, si verificano due problemi:
    1) l'item selezionato non è visualizzato nella griglia.
    2) il MultiConverter viene richiamato due volte (errore verificato tramite il DEBUG del codice).


    Perchè?


    XAML
    codice:
    <DataGridTemplateColumn Header="{StaticResource datagridDay}">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Day, Mode=TwoWay}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <ComboBox Name="dgCmbDay" DataContext="{Binding}">
                    <ComboBox.ItemsSource>
                        <MultiBinding Converter="{StaticResource DateNumNameConverter}" >                                            
                            <MultiBinding.Bindings>                                                
                                <Binding ElementName="dgPlan" Path="CurrentItem"/>
                                <Binding Source="{StaticResource AnalysisPlanViewModel}" Path="ListDayNameOfWeek"/>
                                <Binding Source="{StaticResource AnalysisPlanViewModel}" Path="ListDayNumOfMonth"/>                                                
                                <Binding Path="Items"></Binding>
                            </MultiBinding.Bindings>
                        </MultiBinding>
                    </ComboBox.ItemsSource>
                </ComboBox>
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
    </DataGridTemplateColumn>
    My Converter:
    codice:
        public class DayNumName : IMultiValueConverter
        {
            public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
            {
                if (values == null || values.Length < 4)
                    return null;
    
    
                AnalysisPlanItemExt analisysPlanItem = (AnalysisPlanItemExt)values[0];
                List<string> listDayOfWeek = (List<string>)values[1];
                List<string> listDayNumOfMonth = (List<string>)values[2];
    
    
                if (analisysPlanItem.Type != null)
                {
                    //Day of Weeks
                    if (analisysPlanItem.Type.Value.Equals(Definition.SchedTypeEnum.DayOfWeek))
                        return listDayOfWeek;
    
    
                    if (analisysPlanItem.Type.Value.Equals(Definition.SchedTypeEnum.DayOfMonth))
                        return listDayNumOfMonth;
                }
    
    
                return null;
            }
    
    
            public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
            {
                throw new System.NotImplementedException();
            }
        }
    Thanks!
    Ultima modifica di exFelino; 26-02-2015 a 17:42

  2. #2
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    710
    Grazie al suggerimento dell'utente di un altro forum ho risolto:


    1) Per visualizzare l'item selezionato nella cella ho aggiunto:
    codice:
    <ComboBox Name="dgCmbDay" DataContext="{Binding}" SelectedItem="{Binding Day}">
    nella definizione della ComboBox.


    2) Il fatto che il Converter venga richiamato due volte, viene considerato "normale".


    Grazie!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.