[英]BindingContext doesn't access getters in ViewModel
我有一個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>
從上面的代碼,我無法訪問我的getter {Binding partners}
僅當我將BindingContext更改為以下內容時才有可能:
BindingContext = viewModelTest.partners;
這自然是不希望的,因為我希望能夠將多個參數傳遞給我的視圖,即partnersTwo。
因此,如何從ViewModelTest在xaml文件中進行單獨的綁定?
嘗試這個 :
<CarouselView ItemSource="{Binding partners}">
<CarouselView.ItemsLayout>
<GridItemsLayout/>
</CarouselView.ItemsLayout>
<CarouselView.ItemTemplate>
<DataTemplate>
<Frame>
<Label Text="{Binding}"/>
</Frame>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
您可以定義一個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; }
}
嘗試這個:
Label="{Binding Source={x:Reference Name=myPage}, Path=BindingContext.DataContext.partners}"
其中: myPage
是myPage
的名稱(是的,您需要命名頁面)
此處僅提供旁注:“文本屬性”為“字符串”類型。 您正在返回字符串列表。 考慮將字符串列表轉換為一個字符串並將其返回到屬性...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.