Windows 8 Windows应用商店应用程序中ListView中大小相等的列

Windows 8 Windows应用商店应用程序中ListView中大小相等的列,windows-8,windows-runtime,windows-store-apps,winrt-xaml,Windows 8,Windows Runtime,Windows Store Apps,Winrt Xaml,我想让listview中的所有列都具有相同的宽度,从这个意义上说,用户名标题下的所有列都应该具有相同的宽度。目前看来,附件中的以下是我的代码 <ListView HorizontalAlignment="Left" Width="1000" x:Name="MainLIst"> <ListView.Resources> <DataTemplate x:Key="DataTemplate1">

我想让listview中的所有列都具有相同的宽度,从这个意义上说,用户名标题下的所有列都应该具有相同的宽度。目前看来,附件中的以下是我的代码

         <ListView HorizontalAlignment="Left" Width="1000" x:Name="MainLIst">
        <ListView.Resources>
            <DataTemplate x:Key="DataTemplate1">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="1*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Border Background="SaddleBrown" MaxWidth="213">
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding FirstName}" VerticalAlignment="Top" Margin="0,0,30,0"/>
                    </Border>
                    <Border Background="Maroon" Grid.Column="1" MaxWidth="200">
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding LastName}" VerticalAlignment="Top"  Margin="0,0,30,0"/>
                    </Border>
                    <Border Background="Brown" Grid.Column="2" >
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Username}" VerticalAlignment="Top" Margin="0,0,30,0"/>
                    </Border>
                    <Border Background="RosyBrown" Grid.Column="3" >
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="{Binding Passwrd}" VerticalAlignment="Top" Grid.Column="3" Margin="0,0,30,0"/>
                    </Border>
                </Grid>
            </DataTemplate>
            <DataTemplate x:Key="HeaderTemplate">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="1*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Border Background="SaddleBrown" MaxWidth="213">
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="First Name" VerticalAlignment="Top" Margin="0,0,30,0"/>
                    </Border>
                    <Border Background="Maroon" Grid.Column="1" MaxWidth="200">
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Last Name" VerticalAlignment="Top"  Margin="0,0,30,0"/>
                    </Border>
                    <Border Background="Brown" Grid.Column="2" >
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="User Name" VerticalAlignment="Top" Margin="0,0,30,0"/>
                    </Border>
                    <Border Background="RosyBrown" Grid.Column="3" >
                        <TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" Text="Password" VerticalAlignment="Top" Grid.Column="3" Margin="0,0,30,0"/>
                    </Border>
                </Grid>
            </DataTemplate>
        </ListView.Resources>
        <ListView.HeaderTemplate>
            <StaticResource ResourceKey="HeaderTemplate"/>
        </ListView.HeaderTemplate>
        <ListView.ItemTemplate>
            <StaticResource ResourceKey="DataTemplate1"/>
        </ListView.ItemTemplate>
    </ListView>

和代码隐藏

 public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        ObservableCollection<ClassItem> classItemObj = new ObservableCollection<ClassItem>();
        classItemObj.Add(new ClassItem() { FirstName = "1234567890", LastName = "1234567890", Passwrd = "sdf", Username = "123445567788894564512345678906" });
        classItemObj.Add(new ClassItem() { FirstName = "12345678901234567890", LastName = "1234567890", Passwrd = "sdf", Username = "12344556778889456456" });
        classItemObj.Add(new ClassItem() { FirstName = "1234567890", LastName = "123456789012345678901234567890", Passwrd = "sdf", Username = "123445567788894564561234567890" });
        classItemObj.Add(new ClassItem() { FirstName = "1234567890", LastName = "12345678901234567890", Passwrd = "sdf", Username = "1234455677888945645612345678901234567890" });
        classItemObj.Add(new ClassItem() { FirstName = "1234567890123456789012345678901234567890", LastName = "1234567890", Passwrd = "sdf", Username = "12344556778889456456" });
        MainLIst.ItemsSource = classItemObj;
    }
}

public class ClassItem
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Passwrd { get; set; }
}
公共密封部分类主页面:第页
{
公共主页()
{
this.InitializeComponent();
ObservableCollection classItemObj=新的ObservableCollection();
添加(新ClassItem(){FirstName=“1234567890”,LastName=“1234567890”,Passwrd=“sdf”,Username=“12344556123456788906”});
添加(新的ClassItem(){FirstName=“1234567801234567890”,LastName=“12345678890”,Passwrd=“sdf”,Username=“123445556778889456456”});
添加(新ClassItem(){FirstName=“1234567890”,LastName=“1234567889012345678901234567890”,Passwrd=“sdf”,Username=“1234456778889456456161234567890”});
添加(新ClassItem(){FirstName=“1234567890”,LastName=“1234567801234567890”,Passwrd=“sdf”,Username=“1234455567788894564561234567890”});
添加(新的ClassItem(){FirstName=“123456780123456789012345678901234567890”,LastName=“1234567890”,Passwrd=“sdf”,Username=“123445556778889456456”});
MainLIst.ItemsSource=classItemObj;
}
}
公开课
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串用户名{get;set;}
公共字符串Passwrd{get;set;}
}

}

您当前将列的
宽度设置为自动。如果指定像素值-它们应该相同。

我的文本内容大小会有所不同。我不应该包装文本或添加省略号。有没有办法使所有列的宽度都与最宽的文本块的宽度相同?有,但是每次
textblock
大小更改时,您都需要手动更新它们。您需要处理每个
TextBlock
上的
SizeChanged
事件,并确定这些事件的最大大小。然后,您可以使用类似于我在回答中描述的my
DoubleViewModel
的内容将您的
Border.Width
属性绑定到该视图模型。