【问题标题】:Horizontally Positioning Controls inside ListBoxListBox 内的水平定位控件
【发布时间】:2017-05-29 13:32:46
【问题描述】:

我正在制作一个 UWP 应用程序并尝试在 ListBoxItem 中放置两个 TextBlock。 Horizo​​ntalAlignment 属性似乎不起作用。 我正在尝试将第一个 TextBlock 对齐到左侧,将第二个 TextBlock 对齐到右侧。目前我正在尝试使用网格。这是我的 XAML:

<Pivot.ItemTemplate>
                <DataTemplate>
                    <ListBox ItemsSource="{Binding List}"
                             SelectionMode="Multiple"
                             ScrollViewer.HorizontalScrollMode="Disabled">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="9*"></ColumnDefinition>
                                        <ColumnDefinition Width="1*"></ColumnDefinition>                                       
                                    </Grid.ColumnDefinitions>

                                    <TextBlock Grid.Column="0"
                                               Text="{Binding read}"
                                               HorizontalAlignment="Left"
                                               VerticalAlignment="Center"/>

                                        <TextBlock Text="{Binding num}"   
                                                   Grid.Column="1"/>    
                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </DataTemplate>
            </Pivot.ItemTemplate> 

【问题讨论】:

    标签: xaml listbox uwp


    【解决方案1】:

    你需要在这里做几件事:

    首先,您需要拉伸ListBoxItem 的对齐方式,而不是ListBox 本身。

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

    其次,您应该将 Width="1*" 更改为 Width="Auto" 否则 num TextBlock 可能会被截断。然后您可以删除Width="9*" 并将TextWrapping="Wrap" 添加到read TextBlock,这样如果文本太长就会转到下一行。您也可以安全地删除HorizontalAlignment="Left"。

    【讨论】:

      【解决方案2】:

      尝试在ListBox中设置Horizo​​ntalContentAlignment属性进行拉伸:

      <ListBox ItemsSource="{Binding List}"
               HorizontalContentAlignment="Stretch"
               SelectionMode="Multiple"
               ScrollViewer.HorizontalScrollMode="Disabled">
      

      默认情况下,Horizo​​ntalContentAlignment 设置为向左,并且您的 listItem 不会拉伸以使用所有可用空间,这就是它的内容不会正确对齐到右侧的原因。

      【讨论】:

      • @ravikumar 如果你想使用 TheMintRubber 方式,你应该在 Justin XL 中添加代码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多