【发布时间】:2014-07-23 00:42:13
【问题描述】:
我有一个 TextBlock (caloriesAvailableTextBlock) 我正在尝试更新。 Button (eatCaloriesButton) 应该将TextBlock 绑定的数字减少100。但是,TextBlock 不会更新。它只是保持在 2000 年。有什么我缺少的想法吗?
我在 HubPage.xaml 中的 xaml:
<StackPanel>
<TextBlock TextWrapping="Wrap" Text="Calories Available:" FontSize="24"/>
<TextBlock x:Name="caloriesAvailableTextBlock" Loaded="caloriesAvailableTextBlock_Loaded" TextWrapping="Wrap" Text="{Binding}" FontSize="36"/>
<Button x:Name="eatCaloriesButton" Content="Eat 100 Calories" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" FontSize="18" Click="eatCaloriesButton_Click" FontFamily="Global User Interface"/>
</StackPanel>
我在 HubPage.xaml.cs 中的代码:
public CalorieTracker CalorieTracker { get; set; }
private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
CalorieTracker = new CalorieTracker();
CalorieTracker.CaloriesAvailable = 2000;
}
private void eatCaloriesButton_Click(object sender, RoutedEventArgs e)
{
CalorieTracker.CaloriesAvailable -= 100;
}
private void caloriesAvailableTextBlock_Loaded(object sender, RoutedEventArgs e)
{
((TextBlock)sender).DataContext = CalorieTracker.CaloriesAvailable;
}
我的 CalorieTracker.cs 类包含我要更新的号码:
public class CalorieTracker : INotifyPropertyChanged
{
private int caloriesAvailable;
public int CaloriesAvailable
{
get { return caloriesAvailable; }
set { caloriesAvailable = value;
NotifyPropertyChanged("CaloriesAvailable");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
我的理解是,每当更改CalorieTracker.CaloriesAvailable 时,它都会让该变量的所有出现都知道,但事实并非如此。知道为什么不?还是我离基地太远了?
【问题讨论】:
标签: c# xaml data-binding windows-phone-8.1 textblock