在底部更新。
我认为我的错误很简单,但我不知道该怎么做。
我有一个带有TextBlock的View。
<TextBlock x:Name="aCalories"
Text="{Binding Path= aCalories, UpdateSourceTrigger=PropertyChanged}"
Grid.Row="5"
Grid.Column="3" VerticalAlignment="Center"
Foreground="#2d3b53"
HorizontalAlignment="Center"/>
在完成某些操作后,例如添加不同项目的卡路里“ aColories ”应在更改后更新。但“ aColories ”保持为0。 感谢断点,我看到“_ acalories”获取值,但似乎它们没有传递给我的视图。
我的ViewModel中的aClories:
namespace FoodsLib.ViewModel
{
public class ViewModelTagesBedarfWindow : ViewModelBase, INotifyPropertyChanged
{
public ViewModelTagesBedarfWindow(Repository repository, ModelPersone logedPers) : base(repository)
{
LoginPerson = logedPers;
}
private double _acalories;
public double aCalories
{
get
{
return _acalories;
}
set
{
if (_acalories != value)
{
_acalories = value;
OnPropertyChanged("aCalories");
}
}
// my OnPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
我的.xaml.cs
public ViewModelTagesBedarfWindow MyViewModel { get; set; }
//ViewModelFrdg _viewModel;
public TagesBedarfWindow(ModelPersone logedPerson)
{
InitializeComponent();
MyViewModel = new ViewModelTagesBedarfWindow(new Repository(), logedPerson);
this.DataContext = MyViewModel;
logedPers = logedPerson;
}
我希望能够获取值并且值会自动更改。
例如: 另一个“TextBlock”绑定到这个和(半)作品 但是,在进行更改后,这也没有更新。
public double aSatFat
{
get
{
return LoginPerson.RDASatFat;
}
set
{
_asatFat = LoginPerson.RDASatFat;
OnPropertyChanged("aSatFat");
}
}
看起来就像我想的那么简单。
Binding是正确的,我的DataContext设置正常,但是有很多模型我混淆了来自两个不同模型的2种不同的“卡路里”。 一个名为:“ _acalories ”另一个“ RDACalories ”。
我理解downvote,因为我的错误很简单,没有人从答案中受益。
答案 0 :(得分:0)
您的绑定似乎是正确的,代码也是完美的。 问题似乎与此代码有关:
MyViewModel = new ViewModelTagesBedarfWindow(new Repository(), logedPerson);
this.DataContext = MyViewModel;
未设置dataContext。在此位置放置一个断点并检查dataContext是否正确设置。
public TagesBedarfWindow(ModelPersone logedPerson)
此外,您需要一个默认构造函数,意味着一个不带任何参数的构造函数。所以上面的构造函数不会起作用。