2011-07-27 1 views
0

j'aiWPF deux ne fonctionne pas de manière contraignante

<Grid Name="thisPage"> 
    <TextBlock Name="tbtb" /> 
    <ScrollViewer Name="sv4" Visibility="Hidden"> 
    <ItemsControl ItemsSource="{Binding}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <TextBox Text="{Binding Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" TextChanged="TextBox_TextChanged"/> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
    </ScrollViewer> 
    </Grid> 

dans le MainWindow.vb, j'ai

movieArray as ObservableCollection(of Movie) 

For i As Integer = 0 To 5 
     Me.movieArray.Add(New Movie(i)) 
    Next 

Me.sv4.DataContext = Me.movieArray 
Me.listBox5.DataContext = Me.movieArray 

Private Sub TextBox_TextChanged(sender As System.Object, e As System.Windows.Controls.TextChangedEventArgs) 

     Me.tbtb.Text = "" 
     For Each m As Movie In movieArray 
      Me.tbtb.Text += p.Title.ToString + "^" 
     Next 
     End Sub 

Class Movie 
    Implements INotifyPropertyChanged 

    Public Event PropertyChanged As PropertyChangedEventHandler _ 
     Implements INotifyPropertyChanged.PropertyChanged 

    Private Sub NotifyPropertyChanged(ByVal info As String) 
     RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info)) 
    End Sub 

Property Title As Integer 
     Get 
      Return Me._title 
     End Get 
     Set(value As Integer) 
      Me._title = value 
      If Not (value = _title) Then 
       Me._title= value 
       NotifyPropertyChanged("Title") 
      End If 
     End Set 
    End Property 

pour la page suivante j'ai,

<Grid Name="nextPage" Visibility="Hidden" > 
      <ListBox Name="listBox5" > 
      <ItemsControl ItemsSource="{Binding}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Title}"/> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </ListBox> 
     </Grid > 

Pour changer de page je viens de basculer la visibilité de thisPage et nextPage à l'aide en arrière, les boutons suivants.

IM ne sais pas ce im faire le mal que: -

  1. listbox5 ne montre que les valeurs d'origine, rien changé par textboxes.
  2. TBTB, mais est en mesure de mettre à jour ses valeurs
+0

l'a eu. c'était l'extra 'Me._title = valeur' dans la méthode set avant la condition if. – heyNow

Répondre

2

Je pense que le problème pourrait être votre poseur de propriété « Titre ».

Je suis un gars C#, pas un expert en VB ... mais il semblerait que NotifyPropertyChanged ne sera jamais appelé.

sera toujours vrai car vous venez de définir Me._title = value dans la ligne de code précédente. Ainsi, vous n'exécuterez jamais le code dans votre instruction if.

+0

oui, c'était le problème. – heyNow

0

Pourquoi utilisez-vous evetn TextChanged dans les deux sens, vous ne avez pas besoin de liaison genre de choses. deux voies de liaison est des valeurs lient directement à partir de votre point de vue de la propriété et de la propriété pour voir

donc ne pas utiliser événement TextChanged et essayez à nouveau. Cela fonctionnera.

+0

son pour vérifier si les choses fonctionnaient initialement, si cela fonctionne dans textchanged il devrait fonctionner sur le prochain paage. En outre, j'ai essayé sans textchanged, il ne fonctionnait pas – heyNow