ListView列宽自动

时间:2013-10-21 14:12:24

标签: c# wpf xaml listview autosize

我在XAML中编写代码 - WPF浏览器应用程序 - 页面,只有一个Listview和一个button将新数据添加到listview(来自其他文件),我正在尝试当按下按钮时,使第一列自动调整大小,我使用的是Visual Studio c#2010。

我在后面的代码中使用了以下方法,但AutoResizeColumns将无法识别并出错。

不幸的是,之前建议的解决方案都没有与我合作。

背后的守则

public partial class Page1 : Page, INotifyPropertyChanged
{

    public Page1()
    {

        InitializeComponent();
        this.DataContext = new Page1Model();

    }

    private void TestListe_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void Button1_Click(object sender, RoutedEventArgs e)

   {
        TestListe1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
   }

}

XAML

<Grid>

    <Grid.RowDefinitions>
        <RowDefinition Height="3*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>
    <ListView Name="TestListe1"   Margin="68,22,421,8"  FontSize="12"  >

        <ListView.View>
            <GridView>
                <GridView.Columns>
                      <GridViewColumn Width="auto">                                <GridViewColumn.HeaderTemplate>
                            <DataTemplate>
                                <TextBlock Text="ST1" Margin="10,0,10,1"/>
                            </DataTemplate>
                        </GridViewColumn.HeaderTemplate>
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding One}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

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

    <Button Name="Button1" Grid.Row="1" Height="27" Width="95" Margin="262,24,444,74"  Click="Button1_Click" />

</Grid>

1 个答案:

答案 0 :(得分:8)

AutoResizeColumns来自命名空间System.Windows.Forms。我不确定这是否适用于WPF。但您可以将列的宽度设置为NAN以使其调整大小

如果您按照以下方式命名GridView,请在XAML中填写:

<GridView x:Name="dataGridView">

然后您可以使用此

调整所有列的大小
 foreach (GridViewColumn c in dataGridView.Columns)
 {
     c.Width = 0; //set it to no width
     c.Width = double.NaN; //resize it automatically
 }