Привязка объекта XAML в собственность в модель представления
Всем привет.
У меня есть StackPanel с несколькими текстовыми полями, и я хочу связать свойство Text со свойством типа Person, объявленным в ViewModel представления. Адрес должен идти от представления к ViewModel, но я не могу этого сделать.
Что я уже пробовал:
Это и есть рассматриваемый код:
<StackPanel Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" Margin="40,30" Width="220" DataContext="{Binding TempPersona,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> <TextBox x:Name="txtNombre" Width="160" Margin="0,6,0,18" Text="{ Binding Path=Nombre, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"> </TextBox> <TextBox x:Name="txtApellidos" Width="160" Margin="0,0,0,18" Text="{ Binding Path=Apellidos, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox> <TextBox x:Name="txtDireccion" Width="160" Margin="0,0,0,18" Text="{ Binding Path=Direccion, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> </TextBox> <TextBox x:Name="txtContacto" Width="160" Margin="0,0,0,18" Text="{ Binding Path=Contacto, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"> </TextBox> </StackPanel> <StackPanel Orientation ="Horizontal" Grid.ColumnSpan="2" Grid.Row="2" HorizontalAlignment="Center" Margin="70,0" Width="280"> <Button Content="Añadir" Height="30" Width="120" Margin="20,0,0,10" CommandParameter ="{Binding}" Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext.AnadirAVM}"> </Button> </StackPanel>
В Модель Представления :
private Persona _tempPersona; public Persona TempPersona { get { return _tempPersona; } set { if (_tempPersona != value) //Here value is null { _tempPersona = value; OnPropertyChanged("TempPersona"); } } }
private ICommand _anadirAVM; public ICommand AnadirAVM { get { return _anadirAVM ?? (_anadirAVM = new RelayCommand((parameter) => AnadirAVMAction(parameter))); } } private void AnadirAVMAction(object parameter) { TempPersona = parameter as Persona; targetAVM.Crear(TempPersona); MessageBox.Show("Register Added"); }
Здесь параметр всегда приходит к нулю.
Заранее спасибо. Сезар