数据上下文未反映在文本块中
本文关键字:文本 上下文 数据 | 更新日期: 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
上。