2014-02-26 63 views
-1

我有這個在我的XAML文件:VB.NET結合WPF

<Button Click="Button_Click" 
     FontSize="100" 
     Content="{Binding Path=ButtonText, 
          UpdateSourceTrigger=PropertyChanged, 
          Mode=TwoWay}" 
     Margin="0,185,0.133,0.4"/> 

這是我的.vb文件:

Imports System.ComponentModel 

Class MainWindow 

#Region "INotifyPropertyChanged Interface" 
Implements INotifyPropertyChanged 

Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged 

Protected Sub NotifyPropertyChanged(ByVal propertyName As String) 
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName)) 
End Sub 
#End Region 

#Region "Properties" 
Public Property ButtonText As String 
    Get 
     Return propText 
    End Get 
    Set(value As String) 
     propText = value 
     NotifyPropertyChanged("ButtonText") 
    End Set 
End Property 
#End Region 

Private propText As String 

Private Sub Button_Click(sender As Object, e As RoutedEventArgs) 
    'If propText Is "Test" Then 
    propText = "Suc6" 
    'ElseIf propText Is "Suc6" Then 
    'propText = "Test" 
    'End If 
End Sub 
End Class 

如果我按下按鈕,他的內容應顯示「Suc6 「,但這是失敗的。我做錯了什麼?我一直在閱讀http://www.codeproject.com/Articles/26210/Moving-Toward-WPF-Data-Binding-One-Step-at-a-Timehttp://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1,但無法弄清楚我做錯了什麼。

+0

你在設置DataContext嗎?發佈XAML代碼。 –

+0

這是整個Xaml代碼:http://pastebin.com/hBgQabC6可能有很多代碼可以做得更好。 – Krowi

+0

您不需要按鈕上的UpdateSourceTrigger = PropertyChanged,Mode = TwoWay。按鈕內容不可編輯。 – Paparazzi

回答

0

這是您的VB版本,我測試了它的工作原理是肯定的。

Imports System.ComponentModel 

Public Class MainWindow 
    Implements INotifyPropertyChanged 
    Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged 

    Protected Sub NotifyPropertyChanged(ByVal propertyName As String) 
     RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName)) 
    End Sub 

    Public Sub New() 
     ' This call is required by the designer. 
     InitializeComponent() 
     Me.DataContext = Me 
    End Sub 

    Private propText As String 
    Public Property ButtonText As String 
     Get 
      Return propText 
     End Get 
     Set(value As String) 
      propText = value 
      NotifyPropertyChanged("ButtonText") 
     End Set 
    End Property 


    Private Sub Button_Click(sender As Object, e As RoutedEventArgs) 
     ButtonText = "Suc6" 
    End Sub 
End Class 
+0

非常感謝幫幫我。添加Me.Datatext =我修正了它。 – Krowi

0

與ButtonText在Button_Click替換propText

Private Sub Button_Click(sender As Object, e As RoutedEventArgs) 
    ButtonText= "Suc6" 
End Sub 

而且我會做下面的構造函數來設置的DataContext

public MainWindow() 
    { 
     InitializeComponent(); 
     this.DataContext = this;    
    } 
+0

不起作用,沒有任何變化 – Krowi

+0

進行我建議的額外更改。 this.DataContext = this – rajibdotnet

+0

你確實意識到我正在VB.NET中編程,而不是C#?我知道C#,但我不知道在VB.NET中把它放在哪裏 – Krowi