我有一个viewModel,它链接到具有BindingContext的视图。
BindingContext = viewModelTest;
在我的ViewModel中,我做了一个自定义的吸气剂,目的是获取测试项目列表。
public class viewModelTest: INotifyPropertyChanged
{
public List<string> partners
{
get
{
List<string> _partners = new List<string>() { "test1", "test2", "test3", "test3" };
return _partners;
}
}
public List<string> partnersTwo
{
get
{
List<string> _partners2 = new List<string>() { "test4", "test5", "test6", "test7" };
return _partners;
}
}
}
以下是xaml:
<CarouselView>
<CarouselView.ItemsLayout>
<GridItemsLayout/>
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate>
<Frame>
<Label Text="{Binding partners}"/>
<Label Text="{Binding partnersTwo}"/>
</Frame>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
根据上面的代码,我无法访问我的吸气剂{Binding partners}
仅当我将BindingContext更改为以下内容时,才有可能:
BindingContext = viewModelTest.partners;
这自然是不希望的,因为我希望能够将多个参数传递给我的视图,即partnersTwo。
因此,如何通过ViewModelTest在xaml文件中进行单独的绑定?
答案 0 :(得分:2)
尝试一下:
<CarouselView ItemSource="{Binding partners}">
<CarouselView.ItemsLayout>
<GridItemsLayout/>
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate>
<Frame>
<Label Text="{Binding}"/>
</Frame>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
答案 1 :(得分:1)
您可以定义一个model
并将控件的所有值(例如标签的文本或按钮的背景色)绑定到它的属性。
<CarouselView ItemSource="{Binding MyItems}">
<CarouselView.ItemsLayout>
<GridItemsLayout/>
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate>
<Frame>
<Label Text="{Binding Title}"/>
<Label Text="{Binding Subtitle}"/>
</Frame>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
public class ViewModelTest : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<Model> MyItems { get; set; }
public ViewModelTest()
{
MyItems = new ObservableCollection<Model>() {
new Model(){Title="Test1" ,Subtitle="Test6" },
new Model(){Title="Test2" ,Subtitle="Test7" },
new Model(){Title="Test3" ,Subtitle="Test8" },
new Model(){Title="Test4" ,Subtitle="Test9" },
new Model(){Title="Test5" ,Subtitle="Test10" },
};
}
}
public class Model
{
public string Title { get; set; }
public string Subtitle { get; set; }
}
答案 2 :(得分:0)
尝试一下:
Label="{Binding Source={x:Reference Name=myPage}, Path=BindingContext.DataContext.partners}"
其中:myPage
是页面的名称(是的,您需要命名页面)
此处仅提供旁注:“文本”属性的类型为“字符串”。您正在返回字符串列表。考虑将字符串列表转换为一个字符串并将其返回到属性...