2017-02-24 13 views
0

Orientation="Horizon"というリストビューを持っています。つまり、DataTemplateは行ではなく列のように見えます。すべてがうまく動作し、ListViewは画面に表示されない列がたくさんあるときにスクロールバーを表示します。私はMinWidthをDataTemplateに設定しました。私が達成しようとしているのは、私のsourceが3つ未満のオブジェクトを持っている場合、Datatemplateの幅をListViewの画面に合わせて拡大することです。 私が使用して、ウィンドウの現在の幅得ることができることを承知しています:私は必要なものWPF - 親ビューの幅が変更されたときにコールバック

System.Windows.SystemParameters.PrimaryScreenWidth; 
System.Windows.SystemParameters.PrimaryScreenHeight; 

は、ウィンドウのサイズはDataTemplates幅を更新するために変更されたときに実行されるコールバックメソッドです。この機能はWPFに存在しますか?代替案はありますか?

+0

はこの質問を見てみましょう:http://stackoverflow.com/questions/911243/wpf-extend-last-column-of -listviews-gridview – caesay

+0

違いは、質問の列が静的であることです。 – BlackM

答えて

1

私が必要とするのは、DataTemplatesの幅を更新するためにウィンドウのサイズが変更されたときに実行されるコールバックメソッドです。この機能はWPFに存在しますか?

あなたはWindowまたはListViewためSizeChangedイベントを処理することができます。

このイベントは、要素のサイズが変更されたときに呼び出されます。あなたは、イベントハンドラで、あなたの列の幅を変更することができ、例えば:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     SizeChanged += (s, e) => 
     { 
      GridView gv = listView.View as GridView; 
      gv.Columns[0].Width = ...; 
     }; 
    } 
} 
関連する問題