【问题标题】:Binding to an array of structs in WPF绑定到 WPF 中的结构数组
【发布时间】:2015-05-11 15:00:11
【问题描述】:

在我的应用程序中,我存储了一个结构数组,其中包含我需要向客户支付多少钞票/硬币以及我实际支付了多少。

public struct MoneyType
{ //contains more, but left out for readability
   public int Requested { get; set; }  // How many are requested for a payment
   public int Paid { get; set; } //bills paid to the customer
}

我用这些创建了一个数组,我可以通过以下方式访问视图模型:

MoneyType[] money;  //correctly initialised in the constructor
public MoneyType[] GetMoney()
{
    return money;
}

在视图模型本身中,我以这种方式使这些可访问:

public MoneyType[] MoneyTypes //Denominations
{
    get
    {
        return _dataService.GetMoney();
    }
} 

最后,在我的 XAML 中,我访问了这些:

<cbtn:BillCounter x:Name="euro200" Value = "{Binding MoneyTypes[2].Paid, Mode=TwoWay }" />

[2] 用于表示我想使用哪种类型的钞票/硬币。

我想通过 2 种方式完成这项工作,以便我的自定义控件可以更新支付的硬币/纸币数量。为此,我需要一个用于 MoneyTypes 属性的设置器。

我不确定执行此操作的正确方法。我有一种感觉,不知何故,我不应该从我的视图模型/模型中传递整个数组,而是我的 MoneyTypes 之一的特定部分(付费/请求字段,某种索引指示要使用哪个条目)

我不确定该怎么做。

【问题讨论】:

  • 恐怕。数据绑定不适用于结构。如果你需要它是两种方式,你真的应该把它变成一个类。
  • 如果我将结构更改为类,我将如何处理?主要是我没有得到的 Set 部分。如何告诉模型该数组中的条目已更改?还是通过将整个数组从模型传递给视图模型,我已经做错了,我应该以不同的方式做吗?
  • 您必须实现 INotifyPropertyChanged,以便您的更改在视图中可见。您的结构没有实现它,因此即使您从 ViewModel 更改某些内容,也不会在 View 中更改。

标签: wpf data-binding


【解决方案1】:

希望这个答案对您有所帮助 - https://stackoverflow.com/a/7714924/3207043

基于此,您需要使用引用数据类型来绑定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多