TextBlock中未反映Datacontext

时间:2016-03-01 01:32:01

标签: c# wpf xaml

... Hokkay

所以我确定我做错了一些相当简陋的事情但是,无论如何,当我更改我的类中的值时,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页。

1 个答案:

答案 0 :(得分:1)

您的PointsModel必须实施INotifyPropertyChanged界面,Points媒体资源的设置者应致电NotifyPropertyChanged,因此问题实际上是您的PointsModel