Я учусь создавать приложение для WP7 (Mango), и почему-то с этой проблемой.Это не реальный код моего приложения, а упрощенная версия той же проблемы.Я думаю, что в основном это связано с отсутствием глубокого понимания того, как работает связывание.
XAML.
<TextBlock x:Name="PageTitle" Text="{Binding Title}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
Код позади.
private MainPageViewModel viewModel;
// Constructor
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
viewModel = new MainPageViewModel();
this.DataContext = viewModel;
}
private void ApplicationBarIconButton_Click(object sender, EventArgs e)
{
viewModel.GenerateTitle();
}
И моя ViewModel.
private static int counter = 0;
private string title;
public string Title
{
get { return title; }
set
{
if (title != value)
{
title = value;
OnPropertyChanged("Title");
}
}
}
public MainPageViewModel()
{
title = "Init";
}
public void GenerateTitle()
{
if (counter == 0)
title = "0"; // Title = "0" will work fine.
if (counter == 1)
title = "1";
counter++;
}
Проблема в том, что оно обновляет привязку только один раз в моем конструкторе ViewModel, поэтому заголовок имеет значение «Init».
Любой вызов GenerateTitle не обновляет свойство.Это работает, если я использую «Заголовок» вместо «Заголовок», который вызывает сеттер.
Или я действительно должен использовать «Заголовок»?Я не очень много делал на C #, поэтому мое понимание ООП пока не столь велико.