我有一个带有ViewModel的ContentPage。该视图包含ListView。
在XAML上我有
<ListView>
<ListView.ItemTemplate>
<DataTemplate:>
<templates:miItemView/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在MiItemView上,我有其他带有Label的contentView。如何使用我的ViewModel ????
的String属性绑定此标签的text属性我的ViewModel:
public class RoutePageViewModel : ViewModelBase
{
#region Views
private List<Citizen> _citizens;
private int _citizensPosition;
#endregion
public List<Citizen> Citizens
{
get { return _citizens; }
set
{
_citizens = value;
RaisePropertyChanged();
}
}
public String CitizensPosition
{
get { return _citizensPosition; }
set
{
_citizensPosition = value;
RaisePropertyChanged();
}
}
我的ItemView:
<ContentView.Content>
<Grid
HorizontalOptions="FillAndExpand"
RowSpacing="0"
VerticalOptions="Fill">
<Grid>
<!-- Name -->
<Label
x:Name="myTitle"
FontSize="Large"
Text="{Binding Name}" />
<!-- AGE -->
<Label
FontSize="Small"
Text="{Binding Age}" />
</Grid>
<local:PositionIndicatorView
/>
</Grid>
和PositionView:
<StackLayout>
<Label Style="{StaticResource labelGeneralStyle}" Text="HOW BINDING WITH CitizensPosition />
</StackLayout>
答案 0 :(得分:0)
根据@Gerald的建议,您应该将CitizenPosition作为Citizen模型的属性。这应该是它应该是的,因为它将为每个Citizen具有不同的值(而不是TotalItems,其具有整个列表的单个值)。您尚未包含初始化公民列表的代码,但您可以在绑定列表之前为每个公民分配一个位置值。
通过为PositionView使用单独的视图使问题变得复杂 - 为什么不只是制作ItemView xaml的那一部分?然后,您可以直接绑定到CitizenPosition,就像使用Age和Name标签一样。
如果需要单独的视图,您需要向PositionView添加可绑定属性以设置值,以便绑定到它。有关详细信息,请参阅my answer here,或参阅Xamarin bindable properties documentation。