Как создать динамические формы ввода данных в приложении WPF?

Вот мой код для заставки, и он работает очень хорошо:

public class SplashScreenActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash_screen_activiyt);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(SplashScreenActivity.this, OnBoardingActivity.class);
            startActivity(intent);
            finish();
        }
    }, 2000);
  }
}

Где SplashScreenActivity - стандартная активность, объявленная в AndroidManifest.xml

8
задан Edward Tanguay 24 April 2009 в 13:46
поделиться

2 ответа

Вам нужно будет написать шаблоны данных для ваших различных типов данных поля, чтобы WPF выбрал способ отображения ваших данных в зависимости от их типа. что-то такого формата:

ПРИМЕЧАНИЕ. Это не WPF, а просто псевдокод.

<DataTemplate DataType="{x:Type DateTime}">
  <DatePicker Value="{Binding}"/>
</DataTemplate>  
<DataTemplate DataType="{x:Type String}">
  <TextBox Text="{Binding}"/>
</DataTemplate>

Это не обязательно должен быть примитивный тип. Это может быть Email , DateApproved или даже Url тип класса. например,

class Customer  
{
   public Email Email{get;set;}
   public DateTime DateApproved{get;set;}
   public URI Url{get;set;}
}

public class Email 
{
   public string Type{get;set;}
   public string Value{get;set;} 
} 

.. и т. д.

Обновление

Посмотрите этот пример динамического пользовательского интерфейса WPF на MSDN: Динамический ввод данных с WPF и LINQ

8
ответ дан 5 December 2019 в 19:02
поделиться

Вам необходимо настроить DataTemplate для каждого типа поля, например, Date, String, Bool. Это определит способ отображения каждого поля.

Затем можно использовать столбцы для запроса к базе данных, чтобы сгенерировать список объектов и поместить их в ItemsControl.

ObservableCollection<ColumnDef> columns = new ObservableCollection<ColumnDef>();

// Add columns from DB
columns.Add(new StringColumnDef{Object=..., Field=..., Label=..., Value=...});
columns.Add(new DateColumnDef{Object=..., Field=..., Label=..., Value=...});

items.ItemsSource = columns; // items is an ItemsControl

Каждый элемент в элементе управления будет отображаться на основе DataTemplate. для этого типа.

Внутри ColumnDef вы можете использовать Reflection для обновления объекта данных с изменениями из элементов управления пользовательского интерфейса. Затем вы можете применить изменения к данным при сохранении пользователем.

1
ответ дан 5 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: