2017-01-18 5 views
-2

UserControlを作成していますが、値を更新できません。WPFユーザーコントロールの値を変更します。

私は、TextBoxの値でアプリを起動すると、キャプチャされます。値を変更してボタンに触れると、新しい値を取得することはできません。

これは、ユーザーコントロールのXAMLです:

<TextBox x:Name="txtCedula" md:HintAssist.Hint="Cedula" Text="{Binding txtCedula1}" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Height="40" Margin="113.496,81.01,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="243.5" /> 

そして、これはコードVBである:ここでは

Partial Public Class Conductor 
    Public Property txtCedula1 As String 
     Get 
      Return txtCedula.Text 
     End Get 
     Set(value As String) 
      txtCedula.Text = value 
     End Set 
    End Property 
End Class 

私はよ、私は

Private Sub btnGuardar_Click(sender As Object, e As RoutedEventArgs) Handles btnGuardar.Click 
    validarCampos() 
End Sub 
Private Sub CaptureValue() 
      Dim conductor As New Conductor 

      If conductor.txtCedula1 = Nothing Then 
         MessageBox.Show("Ivalid", "SmartTruck", MessageBoxButton.OK, MessageBoxImage.Information) 

      End If 
    End Sub 
を入力していた値をキャプチャしてみてください

値を入力しても常に無効なメッセージが表示されます

+0

<local:Conductor x:Name="uc" /> 

をあなたは、この名前でアクセスすることができます私たちはボタンのクリックイベントコード。 CaptureValueを呼び出すと、ボックスにテキストがあるときは何もしません – peterG

+0

すみません。準備ができました。メッセージは出てはならない。私が収入を受け取ったので、 –

答えて

0

INotifyPropertyChangedを実装し、それにプロパティを追加するだけで済みます。そうでなければ、あなたが XAMLを結合している場合:

<Textbox Text = "{Binding Test}"' /> 

はなく、すべての更新に、それは一度設定することができます知っている:あなたはMVVMを行っている場合は、このような

何かが動作するはずです。また、あなたのViewModelや何らかのクラスがdatacontextにバインドされていることを確認する必要があります。 ViewModelには、このような

何か:

Public Class TextViewModel 
    Implements INotifyPropertyChanged 

Private _test As String 

Public Property Test As String 
    Get 
     Return _test 
    End Get 
    Set(ByVal value As String) 
     _test = value 
     ' Call OnPropertyChanged whenever the property is updated 
     OnPropertyChanged("Test") 
    End Set 
End Property 

' Declare the event 
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged 

' Create the OnPropertyChanged method to raise the event 
Protected Sub OnPropertyChanged(ByVal name As String) 
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(name)) 
End Sub 

End Class 
+0

私はまた、あなたが他のことをするつもりならば、コマンドとコレクションをバインドする必要があると付け加えます。基本的に、UIスレッドはコードスレッドが何をしているのかを知る必要があり、通常はWPFのヘルパーメソッドをコーディングすることでより多くの機能を実装します。 – djangojazz

1

あなたはユーザーコントロールの新しいインスタンスを作成している:

Dim conductor As New Conductor 

あなたはそれの既存のインスタンスにアクセスする必要があります。名前:あなたは、ウィンドウのXAMLマークアップでユーザーコントロール要素を宣言した場合、あなたはそれをX与える必要がありますが示されていませんでした

Private Sub btnGuardar_Click(sender As Object, e As RoutedEventArgs) Handles btnGuardar.Click 
    validarCampos() 
End Sub 

Private Sub CaptureValue() 
    If uc.txtCedula1 = Nothing Then 
     MessageBox.Show("Ivalid", "SmartTruck", MessageBoxButton.OK, MessageBoxImage.Information) 
    End If 
End Sub 
+0

ありがとうございました –

関連する問題