WPF VB.NET Binding TextBox: Property über Code behind ändern

  • WPF

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von schlumpf90.

    WPF VB.NET Binding TextBox: Property über Code behind ändern

    Hallo liebe Forum-Mitglieder,

    ich bin ein WPF-Neuling und komme eigentlich aus der WinForms - VB.NET-Welt. Ich habe mich aber schon einige Zeit mit WPF beschäftigt und auch schon fleißig gelesen (Internet und Buch mit Beispielen).

    Bei einer Sache hakt es jetzt aber bei mir und ich hoffe, ihr könnt mir weiter helfen.

    Ich habe ein ganz simples Testprogramm: im MainWindow ist eine TextBox, ein Label und ein Button. Das Label ist an die Textbox gebunden und das NotifyPropertyChanged funktioniert auch, soll heißen: wenn ich den Text in der Textbox ändere, ändert sich auch das Label entsprechend mit. Die TextBox ist über ein Binding an eine Property gebunden.

    Jetzt kommt das Problem: wenn ich den Button klicke, möchte ich über das auslösende Event den Text der TextBox ändern, und zwar über die Property. Und genau das bekomme ich nicht hin.



    XAML-Code MainWindow:
    <Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Test_INotifyPropertyChanged"
    xmlns:system="clr-namespace:System;assembly=mscorlib"
    Title="MainWindow" Height="350" Width="525">

    <Grid>
    <TextBox x:Name="TextBox"
    Text="{Binding Beginn, UpdateSourceTrigger=PropertyChanged}"
    FontFamily="Calibri"
    FontSize="26.667"
    FontWeight="Bold"
    HorizontalContentAlignment="Center" Margin="0,12,0,245"
    />
    <Label x:Name="Label"
    Content="{Binding ElementName=TextBox , Path=Text }"
    HorizontalAlignment="Left"
    VerticalAlignment="Center"
    RenderTransformOrigin="0.6,0.5"
    Margin="50,0,0,0"/>

    <Button x:Name="Button"
    Width="127"
    Height="55"
    />
    </Grid>
    </Window>


    MainWindow Code behind:
    Imports Test_INotifyPropertyChanged.MainViewModel
    Imports System.ComponentModel

    Class MainWindow
    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    DataContext = New MainViewModel
    End Sub

    Private Sub Button_Click(sender As Object, e As RoutedEventArgs) Handles Button.Click

    End Sub
    End Class


    Code für MainViewModel:
    Imports System.ComponentModel

    Public Class MainViewModel : Inherits NotifyPropertyChangedBase
    Private _Beginn As String = "Beginn"
    Public Property Beginn As String
    Get
    Return _Beginn
    End Get
    Set(value As String)
    If _Beginn <> value Then
    _Beginn = value
    OnPropertyChanged(New PropertyChangedEventArgs("Beginn"))
    End If
    End Set
    End Property
    End Class


    Code für NotifyPropertyChanged:
    Imports System.ComponentModel

    Public MustInherit Class NotifyPropertyChangedBase : Implements INotifyPropertyChanged

    Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged

    Protected Overridable Sub OnPropertyChanged(e As PropertyChangedEventArgs)
    RaiseEvent PropertyChanged(Me, e)
    End Sub

    End Class





    Ich hoffe, ihr habt einen Tipp für mich.

    Vielen Dank und viele Grüße