Windows 8 Windows应用商店应用程序中ListView中大小相等的列
我想让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 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
事件,并确定这些事件的最大大小。然后,您可以使用类似于我在回答中描述的myDoubleViewModel
的内容将您的Border.Width
属性绑定到该视图模型。