2011-12-04 21 views
1

我正在製作一個WPF應用程序,其中包含一個數據綁定ListView。加載應用程序時,ListViewColumns的寬度將自動調整大小,但添加或更改項目時不會自動調整大小。我已經嘗試刷新列表視圖,將列的寬度設置爲auto,在xaml和VB代碼中設置爲-1或-2,並且嘗試將itemssource更改爲無,然後用項目重新填充。這是XAML代碼:製作數據綁定ListViewColumns添加項目時調整大小

<ListView x:Name="lsvPersons" Margin="5,5,5,35" ItemsSource="{Binding Persons}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/> 
      <GridViewColumn DisplayMemberBinding="{Binding Gender}" Header="Gender"/> 
      <GridViewColumn DisplayMemberBinding="{Binding Age}" Header="Age"/> 
     </GridView> 
    </ListView.View> 
</ListView> 
<Button x:Name="btnAddPerson" Content="Add" Height="25" Margin="0,0,200,5" Width="80"/> 

的綁定工作,與控制器,它與從SQL數據庫Person.getPersons得到人數:

Private oController As New MainController() 
Public Sub New() 
    MyBase.New() 
    Me.InitializeComponent() 
    Me.DataContext = oController 
End Sub 

按下該按鈕後,將打開一個窗口添加一個人。窗口關閉後,該項目將加入到下面的代碼列表視圖,這將刷新列表視圖中的項目:

lsvPersons.ItemsSource = Person.getPersons() 

那麼,什麼纔是我需要做什麼來自動調整列表視圖時的列一個項目被添加或編輯?

回答

0
 GridView gv = lvSrchResulsGrid.View as GridView; 
     if (gv != null) 
     { 
      int colNum = 0; 
      foreach (GridViewColumn c in gv.Columns) 
      { 
       // Code below was found in GridViewColumnHeader.OnGripperDoubleClicked() event handler (using Reflector) 
       // i.e. it is the same code that is executed when the gripper is double clicked 
       // if (adjustAllColumns || App.StaticGabeLib.FieldDefsGrid[colNum].DispGrid) 
       // if (adjustAllColumns || fdGridSorted[colNum].AppliedDispGrid) 
       // { 
        if (double.IsNaN(c.Width)) 
        { 
         c.Width = c.ActualWidth; 
        } 
        c.Width = double.NaN; 
       // } 
      } 
     } 
+0

我試過沒有'如果(adjustAllColumns || fdGridSorted [colNum] .AppliedDispGrid)'部分的代碼,但它並沒有爲我工作。這是否有必要?如果是,那麼它是否與Visual Basic相同呢? – Jona

+0

Sprry是我工作代碼的副本。只要採取如果出。 – Paparazzi

+0

沒有if的代碼似乎沒有對listview做任何事情。由於我使用自定義的WPF主題,這可能是它不起作用的原因嗎? (通過使用默認主題進行測試,使用listview,仍然沒有工作) – Jona

相關問題