2011-12-04 8 views
1

データバインドされたListViewを持つWPFアプリケーションを作成しています。アプリケーションをロードするとき、ListViewColumnsの幅は自動的にリサイズされますが、項目を追加または変更するときには自動的にリサイズされません。私はlistviewをリフレッシュしようとしました。列の幅をauto、-1または-2としてxamlとVB-codeで設定しました。項目を補充する前にitemssourceを何も変更しないでください。データバインドする項目を追加すると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を持つ人を取得し、コントローラ、との結合作品:これは、XAMLコードでボタンを押した後

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)'一部せずにこのコードを試してみたが、それは私のために動作しません。このif文が必要ですか?はいの場合、Visual Basicに相当するものはありますか? – Jona

+0

私の作業コードのコピーであるSprry。もしもアウトを取る。 – Paparazzi

+0

ifを持たないコードはリストビューに何もしないようです。私はカスタムWPFテーマを使用しているので、これがうまくいかない原因かもしれませんか? (リストビューの既定のテーマを使用してテストしましたが、まだ動作しませんでした) – Jona

関連する問題