简单绑定不起作用/更新C#wpf

时间:2016-07-27 01:06:58

标签: c# wpf xaml binding textblock

在底部更新。

我认为我的错误很简单,但我不知道该怎么做。

我有一个带有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中的aClor​​ies:

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,因为我的错误很简单,没有人从答案中受益。

1 个答案:

答案 0 :(得分:0)

您的绑定似乎是正确的,代码也是完美的。 问题似乎与此代码有关:

MyViewModel = new ViewModelTagesBedarfWindow(new Repository(), logedPerson);
this.DataContext = MyViewModel;

未设置dataContext。在此位置放置一个断点并检查dataContext是否正确设置。

public TagesBedarfWindow(ModelPersone logedPerson)

此外,您需要一个默认构造函数,意味着一个不带任何参数的构造函数。所以上面的构造函数不会起作用。