2013-05-06 24 views
0

我正在處理WPF應用程序,我需要在ViewModel上設置XamDataGrid的FieldLayout屬性。一旦我達到這個目標,我將能夠在XamDataGrid上顯示綁定的數據。如何在使用MVVM時設置XamDataGrid的FieldLayout?

棘手的部分是,我需要以編程方式設置FieldLayout,因此我不能做到這一點:

<Grid> 
    <igWPF:XamDataGrid DataSource="{Binding Path=StaffMembers}" 
         FieldLayoutInitialized="xamDataGrid_FieldLayoutInitialized"> 
     <igWPF:XamDataGrid.FieldLayoutSettings> 
      <igWPF:FieldLayoutSettings AutoGenerateFields="False"/> 
     <igWPF:XamDataGrid.FieldLayoutSettings> 
     <igWPF:XamDataGrid.FieldLayouts> 
      <igWPF:FieldLayout> 
       <igWPF:Field Name="Name"/> 
       <igWPF:Field Name="Department"/> 
      <igWPF:FieldLayout> 
     <igWPF:XamDataGrid.FieldLayouts> 
    <igWPF:XamDataGrid> 
</Grid> 

所以我的問題是:是否有可能在視圖模型設置FieldLayout屬性?怎麼樣?

回答

2

爲什麼要在ViewModel中設置FieldLayout? FieldLayout特定於XamDataGrid和您的ViewModel不應該瞭解的視圖的一部分。如果您希望稍後將視圖更改爲不同的網格,或者甚至僅提供相同數據的不同視圖,則這變得非常重要。

如果您只是想在視圖模型中設置網格中可用的字段,您應該能夠在ViewModel中公開具有此信息的Property,然後在View中只將這些字段添加到XamDataGrid。

最簡單的方法是將必要的代碼添加到視圖後面的代碼中,以將字段添加到字段佈局。更復雜的方法是對XamDataGrid使用行爲或附加屬性,以允許您綁定要顯示的字段列表。