47 messaggi dal 16 aprile 2008
www.pollosky.it
Ho notato uno strano comportamento del ComboBox quando faccio Ctrl+Z sulla textbox di digitazione; vorrei sapere se qualcuno di voi ha idea da cosa possa dipendere.

L'errore è facilmente riproducibile in questo modo...

Creare una nuova applicazione WPF con una MainWindow come questa:

<Window x:Class="MainWindow"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 Title="MainWindow" Height="350" Width="525">
  <StackPanel>
    <ComboBox
        Name="cmbTest"
        IsEditable="True"
        SelectionChanged="ComboBox_SelectionChanged">
    </ComboBox>
  </StackPanel>
</Window>

nel code-behind scrivere questo...

Class MainWindow

  Sub New()
    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.
    Dim source As New ObservableCollection(Of String)()
    source.Add("AAA")
    source.Add("BBB")
    source.Add("CCC")
    cmbTest.ItemsSource = source
  End Sub

  Private Sub ComboBox_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs)
    Keyboard.Focus(cmbTest)
  End Sub

End Class


Bene, a questo punto lanciate l'applicazione e provate a digitare "AAA" sul ComboBox e successivamente fate "Ctrl+Z"; dovrebbe scatenarsi un'eccezione del tipo "Cannot Undo or Redo while undo unit is open."

Aldilà del fatto che potrei evitare l'eccezione evitando di fare il focus (che effettivamente non è proprio corretto che sia nel SelectionChanged) o potrei disabilitare la gestione dell'Undo agendo sulla proprietà "IsUndoEnabled" nella textbox del ComboBox...aldilà di tutto ciò, mi piacerebbe capire come mai viene sollevato questo errore, cosa c'è che non va e da che può dipendere?

Vi ringrazio in anticipo per ogni informazione utile a riguardo.

P.S. Il test è stato fatto sul .NET Framework 4.0, non so se sul 4.5 si verifica lo stesso tipo di problema.
Modificato da LukePet il 17 aprile 2013 15.00 -

Luca

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.