Hey,
I am working with WPF and the MVVM pattern for a few days now and it's kinda difficult compared to window forms. I tried to bind the selectedvalue from a combobox to a textbox. Sounds simple but I think I am lost :ehh:
This is my code:
MainWindow.xaml
MainViewModel.vb
Mitarbeiter.xml
Where did I made a fault?
I am working with WPF and the MVVM pattern for a few days now and it's kinda difficult compared to window forms. I tried to bind the selectedvalue from a combobox to a textbox. Sounds simple but I think I am lost :ehh:
This is my code:
MainWindow.xaml
Code:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="150" Width="150">
<Window.Resources>
<XmlDataProvider x:Key="PersonalData" Source="Model\Mitarbeiter.xml" XPath="Mitarbeiter" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<ComboBox Grid.Row="0" x:Name="cmbMitarbeiter" HorizontalAlignment="Left" Margin="10,10,0,0"
VerticalAlignment="Top" Width="120" DisplayMemberPath="@PersonalID"
ItemsSource="{Binding Source={StaticResource PersonalData}, XPath=./Person}"
SelectedValuePath="@Vorname"
SelectedValue="{Binding SelectedVornameValue}"
/>
<Grid Grid.Row="1" DataContext="{Binding SelectedItem, ElementName=cmbMitarbeiter}">
<TextBox Text="{Binding Vorname}"/>
</Grid>
</Grid>
</Window>
Code:
Imports System.ComponentModel
Imports System.Xml
Public Class MainViewModel : Implements INotifyPropertyChanged
Public Sub New()
End Sub
Public Sub New(Vorname As String)
Me.SelectedVornameValue = _SelectedVornameValue
End Sub
Private _SelectedVornameValue As String
Public Property SelectedVornameValue As String
Get
Return _SelectedVornameValue
End Get
Set(ByVal value As String)
_SelectedVornameValue = value
RaiseProp("SelectedVornameValue")
End Set
End Property
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Public Sub RaiseProp(ByVal Propertie As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Propertie))
End Sub
End Class
Code:
<?xml version="1.0" encoding="utf-8" ?>
<Mitarbeiter>
<Person PersonalID="1" Vorname="Fritz" Nachname="Meier" />
<Person PersonalID="2" Vorname="Max" Nachname="Mustermann" />
<Person PersonalID="3" Vorname="Heinz" Nachname="Müller" />
</Mitarbeiter>