Элемент родительской коллекции Xamarin Forms Access - PullRequest
0 голосов
/ 06 февраля 2020

У меня проблема. У меня есть CollectionView с List<Album> albumList внутри альбома List<Picture> Pictures. Теперь я создал следующий XAML:

<CollectionView ItemsSource="{Binding albumList}">
    <CollectionView.ItemsLayout>
        <GridItemsLayout Orientation="Vertical" />
    </CollectionView.ItemsLayout>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Grid VerticalOptions="Center">
                <Grid.RowDefinitions>
                    <RowDefinition Height="50"/>
                    <RowDefinition Height="90"/>
                    <RowDefinition Height="5"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="10"/>
                </Grid.RowDefinitions>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="3"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="3"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="3"/>
                </Grid.ColumnDefinitions>

                <StackLayout Grid.Row="3" Grid.Column="3" Grid.ColumnSpan="2" Padding="0" Margin="0"
                             BindableLayout.ItemsSource="{Binding Pictures}" Orientation="Vertical">
                    <BindableLayout.ItemTemplate>
                        <DataTemplate>
                            <StackLayout Orientation="Horizontal">
                                <Label Grid.Column="1" Text="{Binding albumList.Price, StringFormat='€ {0:F2}'}" TextColor="Black" FontSize="16" />
                            </StackLayout>
                        </DataTemplate>
                    </BindableLayout.ItemTemplate>
                </StackLayout>
            </Grid>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

Теперь я хочу получить доступ к текущему Album.Price внутри следующей строки: <Label Grid.Column="1" Text="{Binding albumList.Price, StringFormat='€ {0:F2}'}" TextColor="Black" FontSize="16" />

Это вне текущей привязки Pictures, поэтому как я могу ввести значение вне текущей привязки?

1 Ответ

2 голосов
/ 06 февраля 2020

Вы можете определить BindingContext из ссылки на элемент вне вложенной Коллекции, например, присвоить имя вашему StackLayout:

<StackLayout x:Name="ElementForReference" Grid.Row="3" Grid.Column="3" Grid.ColumnSpan="2" Padding="0" Margin="0"
                         BindableLayout.ItemsSource="{Binding Pictures}" Orientation="Vertical">

И затем определить BindingContext со ссылкой на элемент вне вложенный:

{Binding BindingContext.Price, Source={x:Reference Name=ElementForReference}}
...