2017-05-08 28 views
0

我有一個包含columnName及其值的列表。所以這個列表可以是不同的。我的意思是有時候我可以有幾個專欄,名字也不一樣。WPF中的自定義列GridView(mvvm)

的structer是

public class LookupFields 
{ 
    public string FieldName { get; set; } 
    public string FieldDisplayName { get; set; } 

    public bool IsCandiateKey { get; set; } 
} 

和這裏是我如何裝載物品進入電網

private void InitializeGrid(ListView displayPanel, List<LookupFields> items) 
    { 
     //GridView gv = new GridView(); 

     GridLookupResult.AllowsColumnReorder = true; 

     var columns = items; 
     for (int i = 0; i < columns.Count; i++) 
     { 
      GridViewColumn col = new GridViewColumn(); 

      col.Header = new Binding ("[FieldName]"); 
      col.DisplayMemberBinding= new Binding("[FieldDisplayName]"); 


      GridLookupResult.Columns.Add(col); 
     }    
     displayPanel.View = GridLookupResult; 
     displayPanel.DataContext = items; 
     displayPanel.ItemsSource = items; 
    } 

這裏是XAML側

<ListView x:Name="listItems" Grid.Row="1" ItemsSource="{Binding AllCustomLookupItems}" SelectedItem="{Binding SelectedItem}" GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler" > 
      <ListView.Resources> 
       <Style TargetType="{x:Type ListViewItem}"> 
        <EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick" /> 
       </Style> 
      </ListView.Resources> 
      <ListView.View> 
       <!--<GridView x:Name="listItemsGrid"> 
        <GridViewColumn Header="{Binding HeaderCode}" DisplayMemberBinding="{Binding Code}" Width="150"/> 
        <GridViewColumn Header="{Binding HeaderDesc2}" DisplayMemberBinding="{Binding Desc2}" Width="150" /> 
        <GridViewColumn Header="{Binding HeaderDesc}" DisplayMemberBinding="{Binding Desc}" Width="350" /> 
       </GridView>--> 
       <GridView x:Name="GridLookupResult"> 
       </GridView>  
      </ListView.View> 
     </ListView> 

我也充滿AllCustomLookupItems與項目。而結果就是這樣..

enter image description here

在哪裏我做了一個錯誤?

更新:這裏是我加載列表

var list = proxy.LoadAll(); 

     foreach (var row in list) 
     { 

      CustomLookup cLookup = new CustomLookup(); 
      cLookup.Fields=new Dictionary<string, string>(); 
      foreach (var col in row.PropertyTable) 
      { 
       cLookup.Fields.Add(col.Key, col.Value); 
      }   

     } 



     AllCustomLookupItems = lookUpFields;// items.Select(s => s.Model).ToList(); 
     _candidateKey = candidateKey; 
     // AllLookupItems = items; 


    public List<LookupFields> AllCustomLookupItems 
    { 
     get { return _allCustomLookupItems; } 
     set 
     { 
      _allCustomLookupItems = value; 
     // SearchExecute(null); 
     } 
    } 

,並在視圖中我獲得這個項目的觀點一樣,模型的一面:

var customViewModel = (LookupCustomViewModel) dc; 
    var items=customViewModel.AllCustomLookupItems; 
+0

請顯示您的ViewModel。你記得將View的DataContext設置爲ViewModel嗎? –

+0

@KamilSolecki,謝謝你的回答。我添加了將項目加載到AllCustomLookupItems的代碼。我認爲它是你要求的 – ertan2002

+0

嗯,這是否意味着你沒有AllCustomLookupItems的屬性?你能展示它在哪裏以及如何實例化? –

回答

0

DataGridItemsSource財產和你可以綁定到一個DataView對象ItemsSource="{Binding DataView}"

+0

我沒有DataGrid,我只有Gridview。我通過將mydata轉換爲xml來解決問題,但我不喜歡這種方式。 – ertan2002

+0

@ ertan2002我的意思是說,而不是使用ListView使用DataGrid並將其綁定到GridView對象。您可以使用DataTable從任何DataTable創建一個GridView。 –