的DataContext在TextBlock中未反映

的DataContext在TextBlock中未反映

问题描述:

Hokkay ...的DataContext在TextBlock中未反映

所以我敢肯定,我只是在做错误的事情很不成熟,但是,不管是什么,当我在我的课更改值,在DataContext存储正确的价值但该值不会发送到文本块。

namespace Points_Calculator 
{ 
    public partial class MainWindow : MetroWindow 
    { 
     private PointsModel Model = new PointsModel(); 

     public MainWindow() 
     { 
      InitializeComponent(); 
      DataContext = Model; 
     } 

     private void Process() 
     { 
      if(Model.ValidInput()) 
      { 
       double K = Model.Kcal/Denum.Kcal; 
       double F = Model.Fat/Denum.Fat; 
       double A = Math.Round(K + F); 

       //outPoints.Text = A.ToString() + " Points"; 
       Model.Points = A.ToString() + " Points"; 
      } 
     } 

     private void inputFat_TextChanged(object sender, TextChangedEventArgs e) 
     { 
      Process(); 
     } 

     private void inputKcal_TextChanged(object sender, TextChangedEventArgs e) 
     { 
      Process(); 
     } 
    } 
} 

问题出在Process()中。看看我在哪里注释了有关更改outPoints(TextBlock)的Text属性的一点?这工作正常。但我想使用数据绑定,这是下一行。正确的值在Model.Points中设置,因为它应该,但由于某种原因,它不反映在TextBlock中。

<TextBlock Name="outPoints" Text="{Binding Points, Mode=TwoWay}" 
        Margin="0,20,-25,0" 
        FontSize="16" 
        Grid.Row="2" 
        TextAlignment="Center" 
        Grid.ColumnSpan="2" /> 

任何人都可以指出我做错了什么?我真的很感激它。

编辑:非常感谢Decoherence的建议和那些谁有同样的问题,我链接相关 How to: Implement the INotifyPropertyChanged Interface页面。

+2

你的'PointsModel'必须实现'INotifyPropertyChanged'接口,'Points'属性的setter应该调用'NotifyPropertyChanged',所以问题实际上是你的'PointsModel'没有显示出来。 –

+0

@decoherence非常感谢。那是缺少的一块;我甚至没有意识到这一点,这就是为什么我没有包含PointsModel。它现在工作非常好。再次,非常感谢。 – Cory

PointsModel必须实现INotifyPropertyChanged接口和Points setter方法应该叫NotifyPropertyChanged,所以真正的问题在于你PointsModel