数据上下文未反映在文本块中

本文关键字:文本 上下文 数据 | 更新日期: 2023-09-27 18:36:44

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();
        }
    }
}

问题出在进程 () 中。看看我在哪里注释掉了关于更改 outPoint (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" />

谁能指出我做错了什么?我真的很感激。

编辑:非常感谢退相干的建议和那些有同样问题的人,我正在链接相关的如何:实现"INotifyPropertyChanged 接口"页。

数据上下文未反映在文本块中

你的PointsModel必须实现INotifyPropertyChanged接口,Points属性的setter应该调用NotifyPropertyChanged,所以问题实际上出在你的PointsModel上。