Windows phone 7 C#windows phone-在xaml ListBox.ItemTemplate中对齐

Windows phone 7 C#windows phone-在xaml ListBox.ItemTemplate中对齐,windows-phone-7,xaml,Windows Phone 7,Xaml,我想做一个简单的列表框。每行应包含两个控件,一个向左对齐,另一个向右对齐,仅此而已:) 我尝试了多种方法,但没有任何效果。我的代码如下 <StackPanel Grid.Row="1" Margin="12,0,12,0" Grid.Column="0"> <ListBox Name="ListBox" Margin="12,0,12,0" ItemsSource="Exercises" HorizontalContentAlignment="Stretch"&

我想做一个简单的列表框。每行应包含两个控件,一个向左对齐,另一个向右对齐,仅此而已:) 我尝试了多种方法,但没有任何效果。我的代码如下

<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>


默认情况下,ListBoxItem不会填充给定的空间。它将自身与内容向左对齐。要确保ListBoxItem的内容跨越整个宽度,需要更改ItemContainerStyle

<ListBox>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

现在,内容将跨越可用宽度。如果您希望使用示例中的StackPanel,请确保也将其设置为水平对齐。StackPanel也不能填充给定的可用空间

<DataTemplate>
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
        <TextBlock Text="abc" HorizontalAlignment="Left" VerticalAlignment="Center"/>
        <TextBlock Text="def" HorizontalAlignment="Right" VerticalAlignment="Center"/>
    </StackPanel>
</DataTemplate>

但是,我建议使用网格并定义两列

<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>


请澄清,您希望控件左右对齐还是内容左右对齐?我希望控件左右对齐:)谢谢,“网格方法”有效:)您甚至不需要使用我正在使用MaterialDesign和MahApps,当我更改ItemContainerStyle时,我丢失了这些库提供的自定义样式,我认为它会完全重置ListBox样式,无论如何,我可以在仅更改该属性时保留自定义样式?该样式很可能有一个键,您可以使用它来扩展样式