【问题标题】:wpf simple mvvm binding Not Workingwpf 简单 mvvm 绑定不工作
【发布时间】:2017-04-08 08:31:21
【问题描述】:

我正在使用 MVVM 模式构建一个 WPF 应用程序,但我一直在测试简单的绑定,但我没有得到它的工作,代码基本上是这样的:

我认为问题出在 xaml 绑定中 型号:

public class Product
{
    private string modelNumber;
    public string ModelNumber
    {
        get { return modelNumber; }
        set { modelNumber = value; }
    }
    private string modelName;
    public string ModelName
    {
        get { return modelName; }
        set { modelName = value; }
    }
    private decimal unitCost;
    public decimal UnitCost
    {
        get { return unitCost; }
        set { unitCost = value; }
    }
    private string description;
    public string Description
    {
        get { return description; }
        set { description = value; }
    }
    public Product(string modelNumber, string modelName,      decimal unitCost, string description)
    {
        ModelNumber = modelNumber;
        ModelName = modelName;
        UnitCost = unitCost;
        Description = description;
    }

    public static Product GetProduct()
    {
        return new Product("1","A6",20000,"Description");
    }
}

视图模型:

  class ProductViewModel
    {
        public Product p;
        public ProductViewModel()
        {
           p= Product.GetProduct();

        }

    }

Xaml:

<Grid Name="gridProductDetails" >

    <TextBlock Margin="7">Model Number:</TextBlock>
    <TextBox Margin="5" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding p.ModelNumber}" ></TextBox>

</Grid>

代码背后:

        private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        gridProductDetails.DataContext = new ProductViewModel();
    }

【问题讨论】:

  • "但是我已经测试了即使是简单的绑定,但我无法让它工作"我不相信你。我读了你的问题,它绝对没有关于你做了什么、你期望发生什么以及实际发生了什么的信息。因此,据我所知,一切都按预期进行。当然,您可以edit 包含这些细节并证明我是骗子。此外,您的属性没有实现 INotifyPropertyChanged,因此当视图模型中的值发生更改时,UI 不会自动更新。

标签: wpf mvvm data-binding


【解决方案1】:

请更新以下内容以解决您的问题:

  1. 将 ProductViewModel 标记为公开
  2. 将变量 p 转换为自动属性。 public Product p { get; set; }

问候

【讨论】:

  • 我不知道这里需要public,但是绑定肯定需要一个属性,所以这应该可以解决问题。
  • 属性必须是公共的,但类可以是内部的。所以只做“2”。应该够了。
猜你喜欢
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2018-06-19
  • 1970-01-01
相关资源
最近更新 更多