2014-02-26 56 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