简单绑定赢得';t工作/更新C#wpf
本文关键字:工作 更新 C#wpf 绑定 简单 | 更新日期: 2023-09-27 17:58:40
底部更新。
我认为我的错误很简单,但我不知道该怎么办。
我有一个视图,它有一个文本块。
<TextBlock x:Name="aCalories"
Text="{Binding Path= aCalories, UpdateSourceTrigger=PropertyChanged}"
Grid.Row="5"
Grid.Column="3" VerticalAlignment="Center"
Foreground="#2d3b53"
HorizontalAlignment="Center"/>
在做了一些事情之后,比如添加不同项目的卡路里"颜色"应该在更改后更新。但是"a颜色"保持为0。多亏了Breakpoints,我看到"_acalibles"得到了值,但它们似乎没有传递到我的视图中。
aViewModel中的颜色:
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;
}
我希望能够获得值,并且这些值会自动更改。
例如:另一个"文本块"绑定到这个并(半)工作
但这也不会在更改后更新。
public double aSatFat
{
get
{
return LoginPerson.RDASatFat;
}
set
{
_asatFat = LoginPerson.RDASatFat;
OnPropertyChanged("aSatFat");
}
}
看起来就像我想的那么简单。
绑定是正确的,我的DataContext设置也很好,但对于许多模型,我混淆了两个不同模型中的两种不同"卡路里"。其中一个命名为:"_acalories",另一个则命名为"RDACalories。
我理解否决票,因为我的错误很简单,没有人能从中受益。
您的绑定似乎是正确的,代码也是完美的。问题似乎与此代码有关:
MyViewModel = new ViewModelTagesBedarfWindow(new Repository(), logedPerson);
this.DataContext = MyViewModel;
未设置dataContext。在这个位置放置一个断点,并检查dataContext是否设置正确。
public TagesBedarfWindow(ModelPersone logedPerson)
此外,您还需要一个默认构造函数,即不接受任何参数的构造函数。所以上面的构造函数是不起作用的。