2011-07-27 141 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