2017-05-26 13 views
1

データをクラスライブラリで処理しているリストビューバインディングでアプリケーションを作成しました。そのため、データモデルはクラスライブラリにあります。拡張として、AvalonDockを使用してウィンドウを管理したいと考えました。例の後で、データをバインドする方法は、データモデルを介して行われ、データモデルはビューモデルから渡されます。だから私は、テキストボックスを削除し、私のリストビューを置くが、私はもはやリストビューアイテムのソースを使用してC#コードからリストビューにアクセスすることができないので、私はそれをデータテンプレートに入れた。だから、コンストラクタでは、フェストビューモデルの私は、リスト型の新しいインスタンスを作成し、値を割り当てるが、データはビューに来る。私はfestviewmodelを実行し、ViewModelで作成したリストのデータはビューにデータなしです。私はテキストブロックを作成し、コンストラクタの値を設定してビューに表示しますが、ListからListviewまでのデータは空です。WPFのビューモデルからデータテンプレートのリストビューをバインドする方法

<localController:PanesTemplateSelector.festViewTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Vertical"> 
       <ListView x:Name="lvfest" > 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Width="100" DisplayMemberBinding="{Binding Fest.id}" > 
           <GridViewColumn.Header> 
            <GridViewColumnHeader Tag="ID" Click="lvfestColumnHeader_Click">ID</GridViewColumnHeader> 
           </GridViewColumn.Header> 
          </GridViewColumn> 
          <GridViewColumn Width="100" DisplayMemberBinding="{Binding Fest.format}" > 
           <GridViewColumn.Header> 
            <GridViewColumnHeader Tag="Format" Click="lvfestColumnHeader_Click">Format</GridViewColumnHeader> 
           </GridViewColumn.Header> 
          </GridViewColumn> 
          <GridViewColumn Width="100" DisplayMemberBinding="{Binding Fest.modified}" > 
           <GridViewColumn.Header> 
            <GridViewColumnHeader Tag="Date" Click="lvfestColumnHeader_Click">Date</GridViewColumnHeader> 
           </GridViewColumn.Header> 
          </GridViewColumn> 
         </GridView> 
        </ListView.View> 
       </ListView> 
      </StackPanel> 
     </DataTemplate> 
    </localController:PanesTemplateSelector.festViewTemplate> 


public class festViewModel 
{ 
    public festViewModel() : base("fest Stats") 
    { 
     Workspace.This.ActiveDocumentChanged += new EventHandler(OnActiveDocumentChanged); 
     Fest = new List<festItem>(); 
     Fest = MainWindow._fest.festData.fest_Items; 
    } 
    public List<festItem> Fest; 
} 

答えて

2

あなたはそのDataContextのプロパティにListViewItemsSourceプロパティを結合することができます。 DataContextfestViewModelインスタンスであれば、あなたはこのようにそれをバインドすることができます:

<ListView x:Name="lvfest" ItemsSource="{Binding Fest}"> 
... 

を... FestfestViewModelクラスのパブリック財産であることを提供する:

public List<festItem> Fest { get; set; } 

あなたがバインドできませんフィールドに。

関連する問題