2013-05-03 28 views
0

如何在加载到GUI时为列表视图中的所有列设置相等宽度?不在XAML中。列表视图对于所有列均等宽度

感谢, 老马

+0

http://stackoverflow.com/questions/1102734/how-can-i-make-a-列中的列表框在wpf中,您可以使用IsSharedSizeScope的所有项目的宽度。你也可以用C#做​​。 – Klaus78 2013-05-03 06:45:10

回答

0

您可以使用此,但它不是一个很好的解决方案..

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; 
0

尝试在ListViewSizeChanged事件。

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; 
     } 
    } 
    } 
根据