use*_*857 5 xaml windows-phone-7
我想制作简单的ListBox.每行应包含2个控件,一个对齐左侧,另一个对齐右侧,这就是全部:)我尝试了多种方法,但没有任何效果.我的代码如下
<StackPanel Grid.Row="1" Margin="12,0,12,0" Grid.Column="0">
<ListBox Name="ListBox" Margin="12,0,12,0" ItemsSource="Exercises" HorizontalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width=">
<TextBlock Text="abc" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Text="def" HorizontalAlignment="Right" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
(两个文本块仅用于演示,在实际应用中我想将一个文本块绑定到实际数据,而不是第二个使用按钮.)当编译这个时,两个文本块都对齐到左边,在模拟器中,似乎像一个带有文本"abcdef"的文本块.知道如何将一个文本块与右侧对齐,另一个文本块与左侧对齐吗?非常感谢 :)
Sha*_*rot 16
默认情况下,ListBoxItem不会填充给定的空间.它将自己和内容对齐在左边.要确保ListBoxItem的内容跨越整个宽度,您需要更改ItemContainerStyle
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
现在内容将跨越可用宽度.如果您希望在示例中使用StackPanel,请确保也将其设置为HorizontalAlignment.StackPanel也没有填写给定的可用空间
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock Text="abc" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Text="def" HorizontalAlignment="Right" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
但是,我建议使用Grid并定义两列
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="abc" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Text="def" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3444 次 |
| 最近记录: |