2009-09-03 7 views
0

WPFでListViewのサイズを変更しようとしています。私はListViewに列の幅に合わせて幅を縮めるように強制する方法を理解したいと思います。私は、Viewプロパティを使用してバインドListViewを持っているので、のようないくつかのGridViewColumn秒を追加します。WPF ListViewサイズ変更狂気

   <ListView ItemsSource="{Binding MyCollection}"> 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Header="Name" Width={Binding NameWidth} DisplayMemberBinding="{Binding Name}"/> 
          <GridViewColumn Header="Fee" DisplayMemberBinding="{Binding Fee}"/> 

         </GridView> 
        </ListView.View> 
       </ListView> 

私は列の非表示を解除/非表示にすることができますように、私は列の幅をバインドします。列を再表示すると、新しい幅に合わせてListViewが大きくなります。しかし、私が列を再び隠すと、ListViewの幅は縮小しません。

私はListViewをサブクラス化し

InvalidateArrange()InvalidateMeasure()InvalidateVisual()のようないくつかのコマンドを呼び出そうとしています。しかしそれらのどれもがListViewを縮小させる原因にはなりません。

コレクションをListViewにリロードすると収縮します。しかし、私はそれがエレガントではない、それを行う正しい方法だと思います。私は混乱の泥沼で自分自身を見つけるためにリフレクターを通して旅してきました。誰かが私にいくつかの洞察を与えてくれる?

答えて

0

ListViewのサイズは、その内容ではなく、親コンテナによって調整されている可能性があります。たとえば、ListView外のGrid、StackPanel、DockPanel、Borderなどは、ListViewの幅を埋めるように伸びている可能性があります。

問題が解決しない場合は、ルートWrapPanelを持つ空のウィンドウでListViewをテストして、コントロール内の他の周囲のXAMLを除外し、そのウィンドウのXAML全体を投稿してください。

関連する問題