的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页面。
答
你PointsModel
必须实现INotifyPropertyChanged接口和Points
setter方法应该叫NotifyPropertyChanged
,所以真正的问题在于你PointsModel
。
你的'PointsModel'必须实现'INotifyPropertyChanged'接口,'Points'属性的setter应该调用'NotifyPropertyChanged',所以问题实际上是你的'PointsModel'没有显示出来。 –
@decoherence非常感谢。那是缺少的一块;我甚至没有意识到这一点,这就是为什么我没有包含PointsModel。它现在工作非常好。再次,非常感谢。 – Cory