2011-07-27 109 views
0

我在MainWindow.vb有WPF双向绑定工作不

<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> 

,我有

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 

下一个页面,我有,

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

要更改网页我只需拨动thisPage和使用下一页回来,下一个按钮的可见性。

IM不知道是什么即时做错了: -

  1. listbox5只显示原始值,没有什么用 文本框改变。
  2. TBTB,但能够你为什么要使用框TextChanged evetn两种方式结合你不需要那种东西,以更新其值
+0

明白了。 它是if条件之前set方法中额外的'Me._title = value'。 – heyNow

回答

2

我认为这个问题可能是你的'标题'属性设置器。

我是一个C#人,而不是VB专家......但看起来NotifyPropertyChanged永远不会被调用。

value = _title将始终为真,因为您只需在上一行代码中设置Me._title = value即可。因此,你永远不会执行你的if语句中的任何代码。

+0

是的,这是问题。 – heyNow

0

。双向绑定直接绑定从视图到属性的值,从属性到视图

所以不要使用textchanged事件并重试。这将工作。

+0

其验证是否最初工作正常,如果它工作在textchanged它应该在下一个工作。此外,我尝试没有textchanged,它不工作 – heyNow