2016-08-22 13 views
0


私はWPFを使用してC#で少しのプロジェクトを作成していますが、データをxamlファイルに正しく書式設定するにはいくつかの問題があります。

私のプログラムは、タイトル、リリース日などの属性を持ついくつかのシリアライズされたニュースオブジェクトを含むxmlファイルをurlからダウンロードします。コンテンツなど
私はこれらのすべてのニュースを特定のテンプレートに応じて自分のウィンドウに表示する必要があります。

ニュースのListにすべてのデータを解析した後で、どのコントロールを使用すればよいか、バインディングを正しく使用する方法を知ることができません。

正確にオブジェクトの量を知らなくても、私は各Newsオブジェクトに対して繰り返し使用できるテンプレートを作成したいと思います。
私はいくつかの情報を検索したところ、各オブジェクトのグラフィカルな表現でなければならないDataTemplate Controlが必要であることがわかりましたが、このテンプレートをデータに組み込む方法や一般的に、 (DataTemplateがある)<Window.Resources>タグ

助けを少しは理解されるだろう、
おかげ

PS:私のプロジェクトの別の部分では、私はコンボボックスを使用して同様のことを行ったが、この場合できたIコンボボックスではなく、より複雑なテンプレート、テキストブロック、ラベルなどで作業したくない。

WPFテンプレートでデータを正しく書式設定する方法C#

テンプレートは次のようにする必要があります

アップデート

変更履歴18/08/2016

  • 変更数1
  • チェンジナンバー2
  • 変更番号N


変更履歴17/08/2016

  • 変更数1
  • 変更番号2
  • 変更数N


変更履歴16/08/2016

  • 変更数1
  • 変更番号2
  • 変更数N

+0

これらのxmlオブジェクトをC#オブジェクトにデシリアライズすることに成功しましたか? –

+0

はい、私の唯一の問題は、これらのオブジェクトをフォーマットするためのテンプレートを作成することです。 –

答えて

1

このMVVMスタイルを実行する方法について簡単に説明します。まず最初に、ビューの背後にViewModelがあることを理解しておく必要があります。バインディングを機能させるには、ViewModelをDataContextに割り当てる必要があります。これを行う方法はたくさんありますが、私はこれをすばやく、汚れてやるつもりです。あなたは、ソリューションを抽出するためのMVVMの方法についてお読みください。

一般に、テンプレートを生成するには3種類のクラスが必要です。ビュー、ViewModelおよびモデル。モデルがダウンロードしたデータになります。 ViewModelは、データの収集を維持する場所です。 (注:データを連続してダウンロードしてリストに追加する予定の場合は、それを観測可能リストにする必要があります)ViewModelは一般的に以下のようになります。

public class MainViewModel 
{ 
    ObservableCollection<SimpleModel> _list = new ObservableCollection<SimpleModel>(); 
    public ObservableCollection<SimpleModel> List 
    { 
     get { return _list; } 
    } 

    public MainViewModel() 
    { 
     _list.Add(new SimpleModel() { Name = "obj1" }); 
     _list.Add(new SimpleModel() { Name = "obj2" }); 
     _list.Add(new SimpleModel() { Name = "obj3" }); 
    } 


} 

シンプルなモデルは、あなたのデータのプレースホルダですが、このように見えます。

public class SimpleModel 
{ 
    public String Name { get; set; } 
} 

は、今すぐあなたのビューで、あなたはDataContextのにViewModelにを適用することにより、背後にあるコードでのviewmodelにビューを接続する必要があります。

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     this.DataContext = new MainViewModel(); 
    } 
} 

これで、DataContextが機能しているので、それをコアコンテナの1つに適用して表示することができます。また、データ型用のデータ型を宣言する必要があります。 (データ型をネームスペースに追加する必要があります)。これはこれに似ています。

<Grid> 
    <Grid.Resources> 
     <DataTemplate DataType="{x:Type local:SimpleModel}"> 
      <Label Foreground="Red" 
        Content="{Binding Name}" /> 
     </DataTemplate> 
    </Grid.Resources> 
    <ListView ItemsSource="{Binding List}"> 

    </ListView> 
</Grid> 

あなたがしなければならないことは、あなたの表示するものにあなたのdatatemplateの内部を変更することです。これにより、MVVM形式で表示することができます。これはちょっとした全体的な紹介ですが、これについてもっと詳しくお読みください。

+0

ありがとう!リストビューコントロールは私をとても助けてくれました:D –

+0

これ以上の明快さが必要な場合は、私は助けてうれしいでしょう:)。これが満足のいくものであれば、質問に回答してください。 –

関連する問題