动态宽度列xaml不工作
本文关键字:工作 xaml 动态 | 更新日期: 2023-09-27 18:19:25
我一直在尝试让动态列宽度为我的简单WP8.1应用程序工作。目标是让第一列占用列表框的一半,其他两列各占四分之一。我希望通过分配一个动态宽度来做到这一点,使用这里描述的*指示器。这让我看到了文章底部的那段xaml代码。
在我的MainPage中,我将DataContext设置为ObservableCollection,所有的数据都显示在各自的列中,列只是没有得到所需的宽度(它们都尽可能小)。什么阻止我的动态宽度工作?我也尝试过横向对齐和文本框宽度,但没有成功。我试着四处寻找答案,我甚至用了一些确实有效的例子,但这并没有让我更接近于理解为什么它在这里不起作用。
提前感谢。
<Grid>
<ListBox Name="transactionListBox" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Name}"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Category}"/>
<TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding Amount}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
项Grid本身正在被ListBox调整大小。你可以通过设置ItemContainerStyle
来覆盖这个行为,使ListBoxItems伸展到水平填充:
<ListBox Name="transactionListBox" ItemsSource="{Binding}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
...
</ListBox>
我认为你需要在ListBox或Grid上限制宽度。在您的代码中,网格和ListBox将重新调整大小以适合内容,因此不需要动态列定义。