Ввод данных в формы Xamarin - PullRequest
       108

Ввод данных в формы Xamarin

0 голосов
/ 28 апреля 2020

Кто-нибудь знает, возможно ли достичь такой записи, как на картинке, которую я прикрепил ниже? Я хотел бы иметь сетку данных для отображения данных из базы данных. Я пытался использовать Xamarin.Forms.Datagrid, но он не позволяет добавлять строки вручную. Моя цель состоит в том, чтобы отображать параметры таким образом, чтобы их было легче просматривать (аналогично формату листа Excel), но Xamarin имеет действительно ограниченные элементы управления ... Просто интересно, кто-нибудь знает, есть ли другие способы добиться этого?

enter image description here

Это мой код для сетки данных. Мне удалось создать только столбец с именами, но не со строками.

<dg:DataGrid HeaderHeight="50"
         BorderColor="#CCCCCC" HeaderBackground="#E0E6F8">
    <dg:DataGrid.Columns>
        <dg:DataGridColumn Title="Zone 1"/>
        <dg:DataGridColumn Title="Zone 2"/>
        <dg:DataGridColumn Title="Zone 3"/>
        <dg:DataGridColumn Title="Zone 4"/>
        <dg:DataGridColumn Title="Zone 5"/>
        <dg:DataGridColumn Title="Zone 6"/>
    </dg:DataGrid.Columns>
</dg:DataGrid>

enter image description here

1 Ответ

0 голосов
/ 28 апреля 2020

Вам не нужно создавать такую ​​запись.

Хотите ли вы достичь такого результата, как этот сценарий? enter image description here

Если это так, следует добавить этот макет в папку xaml.

 <StackLayout>
        <!-- Place new controls here -->
        <dg:DataGrid ItemsSource="{Binding Teams}" SelectionEnabled="True"
               RowHeight="70" HeaderHeight="50" BorderColor="#CCCCCC" HeaderBackground="#E0E6F8">

            <dg:DataGrid.HeaderFontSize>
                <OnIdiom  x:TypeArguments="x:Double">
                    <OnIdiom.Tablet>15</OnIdiom.Tablet>
                    <OnIdiom.Phone>13</OnIdiom.Phone>
                </OnIdiom>
            </dg:DataGrid.HeaderFontSize>

            <dg:DataGrid.Columns>


                <dg:DataGridColumn Title="Team" PropertyName="Name" Width="2*"/>
                <dg:DataGridColumn Title="Win" PropertyName="Win" Width="0.95*"/>
                <dg:DataGridColumn Title="Loose" PropertyName="Loose"  Width="1*"/>
                <dg:DataGridColumn Title="Home" PropertyName="Home"/>
                <dg:DataGridColumn Title="Percentage" PropertyName="Percentage" StringFormat="{}{0:0.00}" />

            </dg:DataGrid.Columns>


        </dg:DataGrid>
    </StackLayout>

Если вы не знаете, как добавлять строки в этом элементе управления. Например,

<dg:DataGridColumn Title="Team" PropertyName="Name" Width="2*"/>

над строкой имеют три атрибута: Title, PropertyName, Width.

Title: средняя первая линия Команда, победа, проигрыш, домашний, процентные титулы.

Width: средняя ширина Column

Если вы хотите чтобы добавить данные, взорвавшие Title, вы должны использовать атрибут PropertyName.

В фоновом макете вы добавляете контекст привязки.

 public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            this.BindingContext = new MyViewModel();
        }
    }

Вот мой MyViewModel.cs

    public class MyViewModel
    {
        public ObservableCollection<Team> Teams { get; set; }
        public MyViewModel()
        {
            Teams = new ObservableCollection<Team>();

            Teams.Add(new Team() {  Home = "lost1", Win = "31", Loose="1", Name="cava", Percentage="91" }) ;
            Teams.Add(new Team() {  Home = "lost2", Win = "31", Loose = "2", Name = "cava", Percentage = "91" });
            Teams.Add(new Team() { Home = "lost3", Win = "31", Loose = "3", Name = "cava", Percentage = "91" });
            Teams.Add(new Team() {  Home = "lost4", Win = "31", Loose = "4", Name = "cava", Percentage = "91 "});
            Teams.Add(new Team() {  Home = "lost5", Win = "31", Loose = "5", Name = "cava", Percentage = "91" });
            Teams.Add(new Team() {  Home = "lost6", Win = "31", Loose = "6", Name = "cava", Percentage = "91",  });
        }
    }

Вот мой Team код.

  public class Team
    {

        public string Name { get; set; }
        public string Win { get; set; }
        public string Loose { get; set; }
        public string Home { get; set; }
        public string Percentage { get; set; }



    }

enter image description here

Вот мое демо.

https://github.com/851265601/Xamarin.Android_ListviewSelect/blob/master/DataGridDemo1.zip

...