我有這樣的代碼:如何更改ViewCell物品值?
class CustomCell : ViewCell
{
private readonly Label _label;
public static readonly BindableProperty DataProperty = BindableProperty.Create("Data", typeof(string), typeof(CustomCell), "Data");
public string Data
{
get { return (string)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
...
protected override void OnBindingContextChanged()
{
base.OnBindingContextChanged();
if (BindingContext != null)
{
_label.Text = Data;
}
}
}
,當我使用此代碼值傳遞給它的ListView它工作得很好,:
<customUi:CustomCell Data="{Binding Data}" />
但是,有時我想能從CustomCell
本身改變Data
。當我簡單地通過編寫this.Data = "new value";
來改變它時,標籤文本不會改變。我可以寫簡單的_label.Text = "new value";
,它的工作原理,但它只是感覺不對。此外,更改Data
,然後致電OnBindingContextChanged()
也感覺不對。
這樣做的正確方法是什麼?
,例如如果數據是十進制的,我希望它以某種特定的方式顯示在標籤中,那麼我建議我應該使用ValueConverter,對吧? – nicks
這取決於你。對於我在多個地方所做的事情,我絕對使用價值轉換器,是的。如果我只需要一次只需要一些東西,我可能會覆蓋已更改的on屬性並將值轉換爲該值,或者創建一個字符串類型的helper屬性,以便自動轉換該值。全部取決於你的喜好和你期望道具改變的頻率。全局字典中的靜態轉換器實例是安全的選擇。 – irreal