Xamarin ListView, свои ячейки

185
14 апреля 2018, 18:16

Вообще, мой цель это сделать список графиков (Microcharts)

К сожалению вариант ниже не работает(компилируется, но ячеек нет). Подозреваю что ячейки просто не приспособлены к такому отображению, поэтому полез как расширять возможности ячеек

var chart = new LineChart() { Entries = entries };
var chartView = new ChartView { Chart = chart, VerticalOptions = LayoutOptions.FillAndExpand };
var listView = new ListView() { ItemsSource = new[] { chartView } }; ;

Скопировал код из примера ExampleListView документации Xamarin, в котором в теории должно быть по два дополнительных Label в каждой ячейки, но выглядит это как на скриншоте ниже, в чём дело?

Код из пользовательской ячейки:

class CustomCellMicrochart : ViewCell
{
    public CustomCellMicrochart()
    {
        //View = new ChartView { Chart = chart, VerticalOptions = LayoutOptions.FillAndExpand };
        var label1 = new Label { Text = "Label 1", FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Label)), FontAttributes = FontAttributes.Bold };
        label1.SetBinding(Label.TextProperty, new Binding("."));
        var hint = Device.RuntimePlatform == Device.iOS ? "Tip: swipe left for context action" : "Tip: long press for context action";
        var label2 = new Label { Text = hint, FontSize = Device.GetNamedSize(NamedSize.Micro, typeof(Label)) };
        //
        // define context actions
        //
        var moreAction = new MenuItem { Text = "More" };
        moreAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
        moreAction.Clicked += (sender, e) => {
            var mi = ((MenuItem)sender);
            Debug.WriteLine("More Context Action clicked: " + mi.CommandParameter);
        };
        var deleteAction = new MenuItem { Text = "Delete", IsDestructive = true }; // red background
        deleteAction.SetBinding(MenuItem.CommandParameterProperty, new Binding("."));
        deleteAction.Clicked += (sender, e) => {
            var mi = ((MenuItem)sender);
            Debug.WriteLine("Delete Context Action clicked: " + mi.CommandParameter);
        };
        //
        // add context actions to the cell
        //
        ContextActions.Add(moreAction);
        ContextActions.Add(deleteAction);

        View = new StackLayout
        {
            Orientation = StackOrientation.Horizontal,
            HorizontalOptions = LayoutOptions.StartAndExpand,
            Padding = new Thickness(15, 5, 5, 15),
            Children = {
                new StackLayout {
                    Orientation = StackOrientation.Vertical,
                    Children = { label1, label2 }
                }
            }
        };
    }
}

А в самом листе указываю по примеру, что используется пользовательские ячейки:

var listView = new ListView ();
        listView.ItemsSource = new[] { "alpha", "beta", "gamma", "delta" };
        listView.ItemTemplate = new DataTemplate(typeof(CustomCellMicrochart)); // has context actions defined
READ ALSO
C# Открытие архива через внешнее приложение

C# Открытие архива через внешнее приложение

Подскажите пожалуйста, как можно открывать архивы через внешнее приложение(explorer или всякие архиваторы)? Пробовал через ProcessStart , но почему...

143
Ограничение listbox wpf только одним элементом

Ограничение listbox wpf только одним элементом

Добрый деньКак можно ограничить листбокс одним элементом? Или же сделать так чтобы новый элемент появлялся вместо первого?

133
Текстовой редактор Atom Фризит

Текстовой редактор Atom Фризит

Пишу совершенно не сложный, не объемный CSS HTML JS код, учусьAtom в свою очередь почему-то иногда фризиться, просто на несколько секунд, потом продолжает...

224
Плавное появление блоков

Плавное появление блоков

Подскажите, пожалуйста, как сделать, чтобы при нажатии на троеточие очень плавно появлялись другие кнопки? transition что-то не срабатывает

229