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(). Смотрите, где я прокомментировал бит об изменении свойства Text outPoints (TextBlock)? Это прекрасно работает. Но я хочу использовать привязку данных, которая является следующей строкой. Правильное значение задается в 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' должно вызывать' NotifyPropertyChanged', поэтому проблема связана с вашим 'PointsModel', который вы не показываете. –
@decoherence спасибо. Это был недостающий кусок; Я даже не осознавал этого, поэтому я не включил PointsModel. Сейчас он работает великолепно. Опять же, очень ценится. – Cory