Xamarin.Forms MultiView BindingContext Not Working
한페이지 Multiview BindingContext 구현은 View 한개에 두개의 모델을 넣으면 된다...
<Page1.cs>
BindingContext = new Page1_ViewModel();
<View에서>
public class Page1_ViewModel
{
public ObservableCollection<EduPoint_List> Bind_Edu_List { get; private set; }
public ObservableCollection<RTDB_Notice> Notices
{
get { return _Notices; }
set
{
_Notices = value;
OnPropertyChanged();
}
}
List<EduPoint_List> source;
public Page1_ViewModel()
{
// Binding 1 -----------
source = new List<EduPoint_List>();
CollectionView collectionView = new CollectionView
{
RemainingItemsThreshold = 5
};
source = Edu_Binds().Result;
if (source is null)
{
//Console.WriteLine("Notice Null");
}
else
{
Bind_Edu_List = new ObservableCollection<EduPoint_List>(source);
if (Bind_Edu_List is null)
{
Console.WriteLine("Bind_Edu_List Null");
}
selectedItem = Bind_Edu_List.Skip(0).FirstOrDefault();
ItemSelectionChanged();
}
// Binding 1 END -----------
// Binding 2 START -----------
_RTDBservices = new DBFirebase();
firebaseHelper.listenForEvents(3);
Notices = firebaseHelper._returnedEvents;
if (Notices != null)
{
AddCommand = new Command(async () => await addNoticesAsync(RTDB_Subject, RTDB_Body));
}
// Binding 2 END -----------
}
public async Task<List<EduPoint_List>> Edu_Binds()
{
return await Page1.EduListBind();
}
ObservableCollection<object> selectedItems;
public ObservableCollection<object> Selected_Items
{
get
{
return selectedItems;
}
set
{
if (selectedItems != value)
{
selectedItems = value;
}
}
}
EduPoint_List selectedItem;
public EduPoint_List SelectedItem
{
get
{
return selectedItem;
}
set
{
if (selectedItem != value)
{
selectedItem = value;
}
}
}
public ICommand ItemSelectionChangedCommand => new Command(ItemSelectionChanged);
public void ItemSelectionChanged()
{
SelectedItemMessage = $"Selection {selectedItem}: {selectedItem.Subject}";
OnPropertyChanged("SelectedItemMessage");
selectionCount++;
}
public string SelectedItemMessage { get; private set; }
int selectionCount = 1;
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
FirebaseHelper firebaseHelper = new FirebaseHelper();
public async Task addNoticesAsync(string _RTDB_Subject, string _RTDB_Body)
{
Console.WriteLine("Add__________________________");
await _RTDBservices.AddNotices(_RTDB_Subject, _RTDB_Body);
}
return oc;
} // Close Page1_ViewModel
______________________________________
참고:
https://stackoverflow.com/questions/59661566/how-do-i-bind-multiple-viewmodels-to-a-single-view
How do I bind multiple viewmodels to a single view
I have two listviews on a single Content page therefore l would like for each listview to have its own viewmodel as itemsoruce.
stackoverflow.com