2
在我的應用程序中,我存儲了一個結構數組,其中包含我需要向客戶支付多少賬單/硬幣以及我有效支付了多少賬單/硬幣。綁定到WPF中的結構數組
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]用於指示我想要使用哪種類型的紙幣/硬幣。
我想讓這項工作有兩種方式,這樣我的自定義控件就可以更新所支付的硬幣/賬單數量。爲此,我需要爲我的MoneyTypes屬性設置一個setter。
我不確定正確的做法。我有一種感覺,不管怎樣,我不應該從我的viewmodel/model中傳遞整個數組,但是我的MoneyTypes中的一個特定部分(付費/請求字段,某種索引指示要使用哪個條目)
我不確定如何做到這一點。
恐怕。數據綁定不會使用struct。如果你需要兩種方法,你應該真的把它變成一個班級。 –
如果我將結構更改爲類,我將如何處理這個問題?這主要是我不明白的Set部分。如何告訴模型該數組中的條目已更改?或者,我已經通過將整個數組傳遞給模型中的視圖模型來做到這一點,我應該如何做到這一點? –
您必須實施INotifyPropertyChanged,以便您的更改在視圖中可見。你的結構體沒有實現它,所以即使你改變ViewModel的東西,它也不會在View中被改變。 –