... 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页。
答案 0 :(得分:1)
您的PointsModel
必须实施INotifyPropertyChanged界面,Points
媒体资源的设置者应致电NotifyPropertyChanged
,因此问题实际上是您的PointsModel