0
프리즘을 사용하여 Xamarin.Form 앱을 개발하고 있습니다.ViewModel의 목록을 사용자 정의 컨트롤에 바인딩하는 방법은 무엇입니까?
var carousel = new CarouselLayout();
[...]
carousel.SetBinding(CarouselLayout.ItemsSourceProperty, "ViewModels");
:이 ContentPage
의 뷰 모델
public class MainPageViewModel: BindableBase
{
private List<BaseViewModel> _viewModels;
public List<BaseViewModel> ViewModels
{
get { return _viewModels; }
set
{
SetProperty(ref _viewModels, value);
OnPropertyChanged();
}
}
public MainPageViewModel()
{
ViewModels = CreateViewModelsList();
}
private List<BaseViewModel> CreateViewModelsList()
{
return new List<BaseViewModel>{
new FirstViewModel(),
new SecondViewModel()
};
}
}
나는 내 MainPage에서 회전 목마와 ViewModels 목록을 바인딩을 만드는 방법이입니다
public class CarouselLayout : ScrollView
{
public IList ItemsSource
{
get
{
return (IList)GetValue(ItemsSourceProperty);
}
set
{
SetValue(ItemsSourceProperty, value);
}
}
public static readonly BindableProperty ItemsSourceProperty =
BindableProperty.Create(
nameof(ItemsSource),
typeof(IList),
typeof(CarouselLayout),
null,
propertyChanged: (bindableObject, oldValue, newValue) =>
{
((CarouselLayout)bindableObject).ItemsSourceChanged();
}
);
void ItemsSourceChanged()
{
_stack.Children.Clear();
foreach (var item in ItemsSource) // ItemSource is a list of ViewModels
{
var view = ?; // How to resolve the View for this ViewModel?
var bindableObject = view as BindableObject;
if (bindableObject != null)
bindableObject.BindingContext = item; // Is this the Prism way to do this?
_stack.Children.Add(view);
}
}
}
: 나는 사용자 정의 회전 목마 제어를 만드는거야
ViewModel을 CarouselLayout의 메서드로 바인딩하는 방법 ItemsSourceChanged()
?