2009-04-24 16 views
8

私はフォームがないから、データベース内のデータ等から、その順序を表示するフィールドを取得します意味(WPFアプリケーションで動的なデータ入力フォームを作成する方法は?

  • 動的なデータ入力フォームにを作成することができますWPFアプリケーションを計画していますここで

が、私はそれについて移動することを計画する方法も可能である場合XAML)

  • はMVVMパターンを使用します。

    :顧客データ入力ビューに私はデータコンテキストを設定します10

    、その後は、フォームのプレースホルダとしての私のXAMLで一つの要素が含まれています。私は、静的な性質を持っていたい私のModelViewで、その後

    <UserControl.Content> 
        <view:DynamicFormView x:Name="CustomerEntry"/> 
    </UserControl.Content> 
    

    が、HTMLがバックコントロール私は1つが内蔵されてXAMLを構築したいですASP.NETで、このやり方で:

    View view = new View(); 
    view.Children.Add(...) 
    

    と、このようにデータの収集に基づいてグリッドを構築

    (FIRSTNAME、LASTNAME)とメタデータ(フィールドラベル、フィールド名、フィールドのヘルプテキスト、フィールドの表示順序、など)をモデルから取得します。

    • 誰でもこのように動的フォームを作成できるWPFアプリケーションを作成していますか?
    • MVVMパターンを使用しましたか?
    • このようにMVVMパターンを使用することは可能ですか、MVVMパターンはビューの静的要素に直接バインドされているビューモデルの静的フィールドを前提としていますか?
  • 答えて

    7

    さまざまなフィールドデータ型のデータテンプレートを記述して、その種類に応じてWPFでデータを表示する方法を選択する必要があります。この形式の何か:

    注:これは、それがプリミティブ型である必要はありませんだけで擬似コード

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

    WPFではありません。 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;} 
    } 
    

    ..etc ...

    更新

    MSDNでこのWPF動的なUIの例をご覧ください:あなたは、各フィールドの種類などのセットアップのDataTemplateに必要Dynamic Data Entry with WPF and LINQ

    +0

    メール、URL、期間、顧客などのカスタムタイプを含めたいので、それぞれ独自の検証が必要です。私は "CustomType"という名前の基底を想像しています。これらの型はすべて継承し、それぞれ独自のメソッドを構築します。 IsValid()とdisplayAsXaml()など。 –

    +0

    XAMLのデータを静的なものにしています。私はASP.NETアプリケーションで覚えています。ほぼすべてのプロジェクトで、小さなDefault.aspxをいくつか持っていて、ダイナミックに作成されたコントロールがいくつかありました。そうしないと、非常に簡単に変更できない、一度だけの静的アプリケーションが作成されます。私はこの動的な性質をWPFから取り除くことを考えています。あなたは小さなWindow1.xamlを持っていて、同様に動的に作成されています。 –

    +0

    この投稿は古いようです。しかし、WPF 4.0でも同様のことをしたいと思います。 WPF Dynamic UIの例へのリンクが壊れているようです。誰かが別の例を知っていますか? –

    1

    日付、文字列、ブール。これにより、各フィールドの表示方法が決まります。

    データベースクエリの列を使用して、オブジェクトのリストを生成し、ItemsControlに配置できます。

    アイテムコントロールの各アイテムは、そのタイプのDataTemplateに基づいて表示されます。

    Reflectionを使用して、データオブジェクトをUIコントロールからの変更で更新することができます。その後、ユーザーが保存するときに変更をデータベースに適用することができます。

    関連する問題