![](/img/trans.png)
[英]How to bind views and view models that exist in different dlls using “Prism.Forms” in “Xamarin.Forms”?
[英]How to bind views to a Dictionary in Xamarin.Forms?
我有View和ViewModel。 在ViewModel中,我創建了一個動態表單(基於表單對象),這個“動態表單”是一個具有N個視圖的StackLayout(如條目,選擇器......)。
可以說,當用戶點擊提交按鈕時,應用程序需要將表單中字段的所有信息存儲在Dictionary<string, object>()
。
我有一個方法可以通過StackLayout並創建一個新的Dictionary。 我不太喜歡這個aprouch,我想要做的是將Stacklayout的字段綁定到Dictionary。
我創建了一個字段,如下所示:
var entry = new
Keyboard = Keyboard.Numeric,
HorizontalOptions = LayoutOptions.Fill,
VerticalOptions = LayoutOptions.CenterAndExpand
};
然后我:
stackLayout.Children.Add(entry);
為了設置正確的biding,我是否需要在設置條目屬性時使用BindingContext屬性,還是應該使用setBiding
方法?
我在這里一無所知,可以使用一些指針。 我在stackoverflow上搜索但沒找到我需要的東西。
編輯:添加我的ViewModel代碼。
class FormViewModel : INotifyPropertyChanged
{
public ICommand RegisterCommand { get; set; }
private StackLayout _layout;
private Answer Answer;
private Dictionary<string, object> dictionary = new Dictionary<string, object>();
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public FormViewModel(Form form, StackLayout layout)
{
_layout = layout;
RegisterCommand = new Command(SaveForm);
}
public void SaveForm()
{
}
}
我刪除了一些東西,但這是基本的想法。
您需要使用ObservableDictionary並在更新,添加或刪除時監視事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.