2013-02-25 81 views
1

我是新来的WPF和尝试这样的事情来更新类中的WPF窗体中的标签文本。 onChange事件是越来越触发,但形式wpf标签文本绑定不工作,我错了

这里就没有得到显示的是我的课

Public Class ExtractDetails 
Inherits UserControl 
Implements INotifyPropertyChanged 

Private _prdFrstName as string 
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged 

Public Property PrdFrstName() As String 
    Get 
     Return _prdFrstName 
    End Get 
    Set(ByVal value As String) 
     If _prdFrstName <> value Then 
      _prdFrstName = value 
      Me.OnPropertyChanged("PrdFrstName") 
     End If 
    End Set 
End Property 

Public Sub suMainStrt() 
    PrdFrstName = strComurl  ''contyains teh URL to nagigate to 
    webBrwFrst = New WebBrowser 
    webBrwFrst.Navigate(New Uri(strComurl)) 
    Call extract(webBrwFrst, strComurl) 
end sub 

末级

网址不断改变,因为我是个从Excel获取值文件和循环每个URL。 我想显示当前正在使用的URL现在

这是我的XAML

<Window x:Class="Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Avenet Prduct Description Extractor" Height="396.627" Width="588.123" Background="AliceBlue" Icon="LGIcon.ico"> 
<Grid Height="341.077" Width="567.721" Background="AliceBlue"> 

<StackPanel Margin="170.225,226.418,3.143,0" Name="StackPanel1" Height="97.994" VerticalAlignment="Top"> 
     <Label Height="30.906" Name="lblCrntSt1" Content="{Binding Path=PrdFrstName, UpdateSourceTrigger=PropertyChanged}" Width="161" BorderThickness="2" BorderBrush="AliceBlue" Background="Red" Foreground="White" FontSize="13"></Label> 

    </StackPanel> 
    </Grid> 

,这是我的窗口类。

Class Window1 
Dim clsIniti As New ExtractDetails 
Public Sub New() 
    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 
    'clsIniti = New ExtractDetails 
    Me.DataContext = clsIniti 
End Sub  
end class 

没有更新文本标签整个功能运行良好。但我希望展示一些东西。我出错的地方

我尝试通过删除少量零件到新创建的项目来进行数据绑定。它在那里工作。所以在这段代码中有一些错误? :`(

+0

你的strComurl是如何设置的?或者如何调用subMainStrt函数? – Manish 2013-02-25 07:48:07

+0

这个mainstrt函数在按钮上点击调用 – 2013-02-25 11:08:17

回答

1

我看到了两个可能的原因,这并不为你工作

A.请问你OnPropertyChanged方法看起来像

' Correct implementation: 
Private Sub OnPropertyChanged(propertyName As String) 
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName)) 
End Sub 

B.确保ExtractDetails比如你?呼吁suMainStrt上,是与您的DataContext的情况下,直接从窗口1的构造函数调用suMainStrt测试:。

Class Window1 
    Dim clsIniti As New ExtractDetails 
    Public Sub New() 
     ' This call is required by the Windows Form Designer. 
     InitializeComponent() 
     'clsIniti = New ExtractDetails 
     Me.DataContext = clsIniti 

     ' test (if this works, your problem is B.) 
     clsIniti.suMainStrt() 
    End Sub  
End Class 

作为一个方面说明:除非你有咕d原因做到这一点,我建议你创建一个专门的viewmodel(类,而不是usercontrol),它包含你想绑定到的属性。

+0

非常感谢,但是我在按钮点击时调用suMainStrt函数并初始化它。和工作。 OnPropertyChanged方法是相同的。甚至在值发生变化时触发。但由于某种原因它不会在WPF表单中更新。 – 2013-02-25 11:11:47

+0

非常感谢adabyron。正如你所说,它是B点。 我已经在第一个(假设CLsA)中创建了一个类的实例,并再次在按钮单击(CLsB)中重新创建了另一个实例,并且正在访问第一个类(CLsA)以更新值。你的回答让我看到了这一点。坦克很多。我浪费了整整一天的额外的生产线:(非常感谢你 – 2013-02-25 11:22:46

+0

很高兴你能解决它。请标记我的答案为接受的,如果你觉得它值得的。 – 2013-02-25 13:14:00