在ListViewItem内的ContentView上使用label.Text绑定String

时间:2017-11-24 12:52:15

标签: xamarin mvvm binding xamarin.forms

我有一个带有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>

1 个答案:

答案 0 :(得分:0)

根据@Gerald的建议,您应该将CitizenPosition作为Citizen模型的属性。这应该是它应该是的,因为它将为每个Citizen具有不同的值(而不是TotalItems,其具有整个列表的单个值)。您尚未包含初始化公民列表的代码,但您可以在绑定列表之前为每个公民分配一个位置值。

通过为PositionView使用单独的视图使问题变得复杂 - 为什么不只是制作ItemView xaml的那一部分?然后,您可以直接绑定到CitizenPosition,就像使用Age和Name标签一样。

如果需要单独的视图,您需要向PositionView添加可绑定属性以设置值,以便绑定到它。有关详细信息,请参阅my answer here,或参阅Xamarin bindable properties documentation