Mam problem z bindowaniem z kodu do kontrolki TextBox. Po uruchomieniu programu w polu tekstowym pojawia się wartość zadeklarowana przy tworzeniu obiektu UserContact.City-> "Warszawa". Edycja pola tekstowego powoduje również zmianę w obiekcie.
Problem jest, gdy podczas uruchomionego programu zmieniam wartość UserContact.City np. po kliknięciu w przycisk. UserContact.City zmienia się, ale w polu tekstowym ta zmiana nie jest widoczna.
Dodam, że na formie mam jeszcze inne pola tekstowe oraz listy, które działają prawidłowo. Różnica jest taka, że ich wartości nie są zamknięte w mojej klasie, lecz są to zwykłe obiekty klasy string np. text="{Binding AccountNumber}".
XAML
<TextBox Name="tbCity" Text="{Binding Path=UserContact.City}" Height="24" Width="170" HorizontalAlignment="Left"/>
Próbowałem również:
<TextBox Name="tbCity" Text="{Binding UserContact.City, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="24" Width="170" HorizontalAlignment="Left"/>
CS
public class ContactData
{
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
public string PostCode { get; set; }
public ContactData(string sCity, string sState, string sCountry, string sPostCode)
{
City = sCity;
State = sState;
Country = sCountry;
PostCode = sPostCode;
}
}
private ContactData _userContact = new ContactData("Warszawa", "mazowieckie", "Polska", "00-123");
public ContactData UserContact
{
get
{
return _userContact;
}
set
{
if (value != _userContact)
{
_userContact = value;
OnPropertyChanged("UserContact");
}
}
}
private void btnZmien_Click(object sender, RoutedEventArgs e)
{
_viewModel.UserContact.City = "Poznan"; // nie zmienia się zawartość pola tekstowego
}