Xamarin Forms C# Как убрать скрол у ListView?

145
25 февраля 2019, 20:30

Начинаю вникать в xamarin. Решил написать простенький проект а-ля заметочника. Делаю все по паттерну MVVM. Проблема следующая: нужно разместить 2 списка, слева и справа, они разных размеров, и не зависимы друг от друга, вот пока сделал примерно так:

Но суть в том, что ListView имеет в себе свой scroll, и я без понятия как его можно отключить.. наваял вообще так:

  <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Diary.Views.NotesListPage">
    <ContentPage.Padding>
        <OnPlatform x:TypeArguments="Thickness">
            <On Platform="iOS" Value="10, 20, 10, 0" />
            <On Platform="Android" Value="10, 0" />
        </OnPlatform>
    </ContentPage.Padding>
    <StackLayout>
        <Button Text="Добавить" Command="{Binding CreateNoteCommand}" />
<ScrollView>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <ListView x:Name="NoteListLeft" ItemsSource="{Binding NotesLeft}"
                          SelectedItem="{Binding SelectedNote, Mode=TwoWay}" HasUnevenRows="True">
                <ListView.ItemTemplate>
                    <DataTemplate>
                    <ViewCell>
                        <ContentView Padding="5">
                            <Frame OutlineColor="Black"
                                   Padding="10">
                                <StackLayout Orientation="Horizontal">
                                    <!--<BoxView Color="{Binding Color}"
                                             WidthRequest="50"
                                             HeightRequest="50"  />-->
                                        <StackLayout>
                                            <Label Text="{Binding Title}" FontAttributes="Bold" FontSize="Medium" />
                                              <Label Text="{Binding Message}" FontSize="Small" />
                                        </StackLayout>
                                    </StackLayout>
                                </Frame>
                            </ContentView>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
                <ListView Grid.Column="1" x:Name="NoteListRight" ItemsSource="{Binding NotesRight}"
                          SelectedItem="{Binding SelectedNote, Mode=TwoWay}" HasUnevenRows="True">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <ContentView Padding="5">
                                    <Frame OutlineColor="Black"
                                       Padding="10">
                                        <StackLayout Orientation="Horizontal">
                                            <!--<BoxView Color="{Binding Color}"
                                             WidthRequest="50"
                                             HeightRequest="50"  />-->
                                            <StackLayout>
                                                <Label Text="{Binding Title}" FontAttributes="Bold" FontSize="Medium" />
                                                <Label Text="{Binding Message}" FontSize="Small" />
                                            </StackLayout>
                                        </StackLayout>
                                    </Frame>
                                </ContentView>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Grid>
</ScrollView>
    </StackLayout>
</ContentPage>
Answer 1

Это можно реализовать путем создания собственного рендера. В общий проект добавляете следующий класс:

public class CustomListview : ListView {}

В проект Android:

public class CustomListViewRenderer: ListViewRenderer 
{  
    Context _context;  
    public CustomListViewRenderer(Context context): base(context) 
    {  
        _context = context;  
    }  
    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ListView> e)
    {  
        base.OnElementChanged(e);  
        if (Control != null) 
        {  
            Control.VerticalScrollBarEnabled = false;  
        }  
    }  
}  

Не забудьте добавить перед namespace в Android проекте

[assembly: ExportRenderer(typeof(CustomListview), typeof(CustomListViewRenderer))]

Используется в XAML так(при условии что класс CustomListview объявлен в корне общего проекта):

xmlns:local="clr-namespace:Имя проекта"
<local:CustomListview></local:CustomListview>

Подробнее о custom renderer можно почитать здесь

READ ALSO
Раскодировать ответ

Раскодировать ответ

С помощью класса HttpClient конекчусь к некоему APIПолучаю такой ответ:

151
узнать на php c какой формы ее класс пришел ajax запрос?

узнать на php c какой формы ее класс пришел ajax запрос?

узнать на php c какой формы ее класс пришел ajax запрос? ели с классом class_1 оправить 1 собщение, если class_2 - второе

153
Инсталятор скрипта , платная лицензия

Инсталятор скрипта , платная лицензия

Подскажите как сделать свой продукт платным с выдачей лицензией на него

177
php цикл вывод в массив

php цикл вывод в массив

Есть такой код:

126