Распределение стеков внутри - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть представление xaml, которое представляет собой простое представление списка, в котором есть несколько стековых расположений в ячейках вместе с некоторой простой привязкой моей модели:

    <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:directory="clr-namespace:Directory;assembly=Directory"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:models="clr-namespace:Directory.Models"
             xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin.Abstractions"
             xmlns:viewModels="clr-namespace:Directory.ViewModels;assembly=Directory"
             x:Class="Directory.Views.DirectoryList">
    <ContentPage.BindingContext>
        <viewModels:MasterViewModel/>
    </ContentPage.BindingContext>
    <ListView Margin="0,10"  
              ItemTapped="ListViewItem_Tabbed"  
              ItemsSource="{Binding PeopleCollectionGrouped}"  
              IsGroupingEnabled="True"
              GroupDisplayBinding="{Binding Key}"
              GroupShortNameBinding="{Binding Key}"
              HasUnevenRows="True" 
              BackgroundColor="White">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="models:People">
                <ViewCell>
                    <Grid
                        Padding="10"
                        ColumnSpacing="10"
                        RowSpacing="10">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <controls:CircleImage
                            Aspect="AspectFill"
                            BorderColor="Black"
                            BorderThickness="3"
                            HeightRequest="66"
                            HorizontalOptions="CenterAndExpand"
                            Source="{Binding PhotoUrl}"
                            VerticalOptions="CenterAndExpand"
                            WidthRequest="66" />
                        <StackLayout Grid.Column="1" VerticalOptions="Center">
                            <Label Text="{Binding FullName}" />
                            <Label Text="{Binding Location}" />
                            <StackLayout IsVisible="{Binding IsVisible}"  
                                         Orientation="Horizontal"  
                                         Margin="0,0,80,0">
                                <Button Text="Place Order"  
                                        WidthRequest="110"  
                                        FontSize="15"  
                                        BackgroundColor="Chocolate"  
                                        TextColor="White"/>
                            </StackLayout>
                        </StackLayout>
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>

Все привязки работают отдельно от привязки IsVisible, котораявызывает сбой приложения с:

System.InvalidProgramException: Invalid IL code

Если я изменю свой Xaml, чтобы свойство IsVisible не связывалось, а просто было установлено значение "True", оно компилируется и загружается.

У меня естьне знаю, почему это не работает, так как другие значения из модели связаны правильно.

Вот модель People, из которой "PeopleCollectionGrouped" имеет:

public class People
{
    [JsonProperty("photo_url")]
    public string PhotoUrl { get; set; }

    [JsonProperty("location")]
    public string Location { get; set; }

    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("first_name")]
    public string FirstName { get; set; }

    [JsonProperty("middle_name")]
    public string MiddleName { get; set; }

    [JsonProperty("last_name")]
    public string LastName { get; set; }

    public string FullName => $"{FirstName} {LastName}";

    public string NameSort
    {
        get
        {
            if (string.IsNullOrWhiteSpace(FullName) || FullName.Length == 0)
            {
                return "?";
            }

            return FullName[0].ToString().ToUpper();
        }
    }


    public bool IsVisible { get; set; }
}

Если кто-то можетместо, где я ошибся, поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...