Reputation: 554
I want to Bind the Text Property of a TextBox to a Child of a of a Property of a ViewModel.
Here is my code:
foo.cs:
public class foo()
{
public foo()
{
Bar = "Hello World";
}
public string Bar { Get; private Set;}
//Some functions
}
ViewModel.cs:
public class ViewModel : INotifyPropertyChanged
{
public foo Property { Get; Set; }
//some more properties
public ViewModel()
{
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
Window.xaml.cs:
public ViewModel MyViewModel { get; set; }
public Window()
{
MyViewModel = new ViewModel();
this.DataContext = MyViewModel;
MyViewModel.Property = new foo();
}
Window.xaml:
<!--
Some controls
-->
<TextBox Text="{Binding Path=Property.Bar}"></TextBox>
I also tried this and this, but none of them worked for me.
Upvotes: 3
Views: 191
Reputation: 43596
You have implemented INotifyPropertyChanged
on your ViewModel
but you never call it when Property
is changed
try:
public class ViewModel : INotifyPropertyChanged
{
private foo _property;
public foo Property
{
get{ return _property; }
set{ _property = value; OnPropertyChanged(); }
}
.................
Upvotes: 4