W Xamarin.Forms 2.3.4.192-Pre2 stworzyłem niestandardowy ViewCell, który używa siatki do DataTemplate Xamarin.Forms.ListView.}.

Gdy ListView jest załadowany, rzuca System.ArgumentException: NaN is not a valid value for width.

Znajdowałem Błąd w Xamarin.Forms Kod źródłowy, ale nie mogę dowiedzieć się, dlaczego szerokość byłaby NaN

Błąd

System.argumentException: Nan nie jest prawidłową wartością dla szerokości

Xamarin.Forms.Size.Size (podwójna szerokość, podwójna wysokość) xamarin.forms.VisualElement.getsizerequest (podwójna szerokość, podwójna wysokaCrudstress) xamarin.forms.VisualElement.Measure (podwójne widmonstraint, podwójna wysokość konstraclaint, flagi pomiarowe) xamarin.forms.stacklayout .Compresshorizontallayout (układy stacklayout.layoutinformation układ, podwójne widmoksconstreard, podwójne heightCrudstresion) Xamarin.Forms.stacklayout.comPressłoniveLayout (stacklayout.layoutinformation Układ, orientacja stacksorientation, podwójna szerokość, podwójna wysoka konstrukcja) xamarin.forms.Stacklayout.calculatelayout (stacklayout X, podwójne, podwójne szerokość, podwójna wysokość konstonstraint, bool processExpanders) Xamarin.forms.stacklayout.layoutchildren (podwójna x, podwójna y, podwójna szerokość, podwójna wysokość) Xamarin.forms.layout.updatechildrenlaout () xamarin.forms.layout (Dwuosobowa szerokość, podwójna wysokość) Xamarin.Forms.VisualElement.SizeAllokowany (podwójna szerokość, Dou Wysokość ble) xamarin.forms.visualElement.setyze (podwójna szerokość, podwójna wysokość) Xamarin.Forms.VisualElement.set_bounds (wartość prostokąta) Xamarin.forms.VisualElement.layout (prostokątny) xamarin.forms.layout.layoutchildintintingRegion (Wizualne dziecko, Region prostokątny) Xamarin.Forms.grid.layoutchildren (podwójny x, podwójna, podwójna szerokość, podwójna wysokość) Xamarin.forms.layout.Updatechildrenlayout () Xamarin.forms.Layout.onizeAloCated (podwójna szerokość, podwójna wysokość) Xamarin.Forms. VisualElement.SizeAllokowany (podwójna szerokość, podwójna wysokość) Xamarin.Forms.VisualElement.setSize (podwójna szerokość, podwójna wysokość) Xamarin.forms.VisualElement.set_bounds (wartość prostokąta) xamarin.forms.visualElement.layout (granice prostokąta) Xamarin.forms. Układ VIOOL RECCECLLS, TRING TEMATIDID) XAMARIN.FORMS.PLATFORM.IOS.ListviewRenderer.listviewdatasource.getCell (UIBITEVIEW Tableview, NSIndExpath IndexPath) UIKIT.UiApplication.uiapplicationMain (int, ciąg [], INTPTR, INTPTR) (Wrapper Managed-To-Native) UIKIT.Uiapplication.main (String [] Args, INTPTR Główny, Delegat Intptr) UIAPplication.cs: 79 UIKIT.UiApplication.Main (ciąg [] Args, printalclassNameName, String delegateclassname) Uiapplication.cs: 63 MondaypundaPap.ios.Cas. Main (String [] Args) Main.cs: 17

Kod

Zebrałem reprodukcję w tym repozytorium na GitHub: HTTPS: // GitHub. COM / BRMINNICK / XAMARIN.FORMS-NAAN-IS-AN-A-Ważność-wartość dla-szerokość-Reprodukcja

ListView

var listView = new ListView(ListViewCachingStrategy.RecycleElement)
{
    BackgroundColor = Color.White,
    RowHeight = 200,
    ItemTemplate = new DataTemplate(typeof(PuzzleCellCardView)),
    SeparatorColor = Color.Transparent
};

ViewCell.

public class PuzzleCellCardView : ViewCell
{
    Image _puzzleImage;
    Label _punNumberValueLabel;
    Image _questionMarkImage;
    Image _checkImage;

    public PuzzleCellCardView()
    {
        var puzzleImage = new Image
        {
            HeightRequest = 150,
            BackgroundColor = Color.White
        };

        var punNumberTextLabel = new Label
        {
            Text = " Pun Number",
            Style = StyleConstants.LabelStyle
        };

        _punNumberValueLabel = new Label
        {
            Style = StyleConstants.LabelStyle
        };

        var puzzleNumberStackLayout = new StackLayout
        {
            Children = {
                punNumberTextLabel,
                _punNumberValueLabel
            },
            Orientation = StackOrientation.Horizontal,
            BackgroundColor = Color.White
        };

        _questionMarkImage = new Image
        {
            Source = App.ImageConstants.QuestionMark,
            MinimumHeightRequest = 100,
            BackgroundColor = Color.White
        };

        _checkImage = new Image
        {
            Source = App.ImageConstants.Check,
            MinimumHeightRequest = 100,
            BackgroundColor = Color.White
        };

        var whitePuzzleNumberBackgroundBoxView = new BoxView
        {
            BackgroundColor = Color.White
        };

        var cellGridLayout = new Grid
        {
            BackgroundColor = Color.Black,
            Padding = new Thickness(2),
            RowSpacing = 2,
            ColumnSpacing = 1,
            VerticalOptions = LayoutOptions.Fill,

            RowDefinitions = {
                new RowDefinition{ Height = new GridLength (20, GridUnitType.Absolute) },
                new RowDefinition{ Height = new GridLength (150, GridUnitType.Absolute) }
            },
            ColumnDefinitions = {
                new ColumnDefinition{ Width = new GridLength (1, GridUnitType.Star) },
                new ColumnDefinition{ Width = new GridLength (1, GridUnitType.Star) }
            }
        };
        cellGridLayout.Children.Add(whitePuzzleNumberBackgroundBoxView, 0, 0);
        Grid.SetColumnSpan(whitePuzzleNumberBackgroundBoxView, 2);

        cellGridLayout.Children.Add(puzzleNumberStackLayout, 0, 0);
        Grid.SetColumnSpan(puzzleNumberStackLayout, 2);

        cellGridLayout.Children.Add(_puzzleImage, 0, 1);

        cellGridLayout.Children.Add(_checkImage, 1, 1);
        cellGridLayout.Children.Add(_questionMarkImage, 1, 1);

        if (Device.OS == TargetPlatform.Android)
            _puzzleImage.InputTransparent = true;

        View = cellGridLayout;
    }
}
2
Brandon Minnick 15 luty 2017, 19:05

2 odpowiedzi

Najlepsza odpowiedź

Wydaje się, że jest regresja z Xamarin.Forms V2.3.4.192-Pre2.

Wyjątek nie jest rzucony przy użyciu XAMARIN.FORTS V2.3.3.180.

Złożyłem błąd zespołowi Xamarin.Forms przez Bugzilla: HTTPS: //bugzilla.xamarin .com / show_bug.cgi? Id = 52533

Aktualizacja: Ten błąd jest ustalony w XAMARIN.FORTS 2.3.4.214-Pre5

2
Brandon Minnick 21 kwiecień 2017, 15:08

Dodaj kontener (np. Ramka) i określ szerokość dla tego pojemnika,

<Frame x:Name="AutoCompleterContainer" Grid.Row="1" WidthRequest="400">
    <telerikInput:RadAutoComplete ....
</Frame>
0
Shady 14 sierpień 2018, 11:58