1

How can we set equal width for all columns in a listview when it loading into GUI? Not in XAML.

Thanks, nag

user1805169
  • 87
  • 2
  • 13
  • according http://stackoverflow.com/questions/1102734/how-can-i-make-a-column-in-a-listbox-in-wpf-the-same-width-for-all-items you can use IsSharedSizeScope. You can also do it in C#. – Klaus78 May 03 '13 at 06:45

2 Answers2

1

Try the SizeChanged event on the ListView.

XAML

<ListView x:Name='ListView1' 
         HorizontalAlignment='Stretch'
         Margin='12'
         VerticalAlignment='Stretch'>
  <ListView.View>
    <GridView x:Name='Gridview1'>
       <GridViewColumn Header='First' />
     <GridViewColumn Header='Second' />
       <GridViewColumn Header='Third' />
   </GridView>
</ListView.View>

C#

 public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
      ListView1.SizeChanged += LV_SizeChanged;


    }

    void LV_SizeChanged(object sender, SizeChangedEventArgs e)
    {
      var newWidth = ListView1.ActualWidth / Gridview1.Columns.Count;
      foreach (var column in Gridview1.Columns)
      {
        column.Width = newWidth;
      }
    }
  }
Walt Ritscher
  • 6,977
  • 1
  • 28
  • 35
0

You can use this, but its not a nice solution..

    ListView listview = new ListView();
    GridView gridview = new GridView();

    GridViewColumn gridviewcolumn1 = new GridViewColumn();
    gridviewcolumn1.Width = 10;
    GridViewColumn gridviewcolumn2 = new GridViewColumn();
    gridviewcolumn2.Width = 10;
    GridViewColumn gridviewcolumn3 = new GridViewColumn();
    gridviewcolumn3.Width = 10;


    gridview.Columns.Add(gridviewcolumn1);
    gridview.Columns.Add(gridviewcolumn2);
    gridview.Columns.Add(gridviewcolumn3);

    listview.View = gridview;
Karl_Schuhmann
  • 1,272
  • 5
  • 17
  • 37