在ItemsControl

时间:2017-06-01 14:47:38

标签: wpf

为我的数据绑定标签获取此XAML:

<ItemsControl 
    Name="itClblArtiksel" 
    ItemsSource="{Binding ArtikelInfo}" 
    Margin="925,45,0,0" 
    Width="89" 
    Height="31"  
    HorizontalAlignment="Left" 
    VerticalAlignment="Top" 
    BorderThickness="1" 
    BorderBrush="Black"  
    FontWeight="Bold"
    >
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Label  
                x:Name="lblArtikelNr" 
                Content="{Binding ArtNr}" 
                />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我已经尝试将VerticalContentAlignment的{​​{1}}设置为ItemsControl and Label,但内容不会集中......任何想法?

修改

图片展示情况: enter image description here

因为你可以看到粗体(因此Center的那个)在空中

编辑2

接受的答案给了我最终解决方案:

<itemcontrol>

<ItemsControl Name="itClblArtiksel" ItemsSource="{Binding ArtikelInfo}" VerticalContentAlignment="Center" Height="37" Margin="925,45,236,38" BorderThickness="1" BorderBrush="Black" FontWeight="Bold"> <ItemsControl.ItemTemplate> <DataTemplate> <Grid Height="37"> <Label VerticalAlignment="Center" x:Name="lblArtikelNr" Content="{Binding ArtNr}" /> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> 周围设置GridLabel相同Height并设置ItemsControlVerticalAlignment是解决方法

3 个答案:

答案 0 :(得分:1)

如何将VerticalAlignment的{​​{1}}属性设置为Label

Center

答案 1 :(得分:1)

这会将标签垂直放在父母的中心。在您的情况下,这将无效,因为这些项目只与其内容一样高。

<DataTemplate>
    <Label  
        VerticalAlignment="Center"
        x:Name="lblArtikelNr" 
        Content="{Binding ArtNr}" 
        />

</DataTemplate>

如果你希望它们在垂直方向上明显居中,你需要为它们提供空间:

<DataTemplate>
    <Grid Height="100">
        <Label  
            VerticalAlignment="Center"
            x:Name="lblArtikelNr" 
            Content="{Binding ArtNr}" 
            />
    </Grid>
</DataTemplate>

但是由于你的ItemsControl的固定高度为31,这只会使物品比他们的父物更大,将标签推到视线之外。你需要删除它。我还建议您考虑习惯使用StackPanelGrid进行布局,而不是在所有内容上设置非常大的边距。边距方法使重新排列UI变得困难。

答案 2 :(得分:1)

这对我有用:

<ItemsControl 
  BorderThickness="1" 
  BorderBrush="Black"  
  FontWeight="Bold">
  <ItemsControl.Items>
    <system:String>wefwefwefwe</system:String>
    <system:String>wefwefwefwe</system:String>
    <system:String>wefwefwefwe</system:String>
    <system:String>wefwefwefwe</system:String>
  </ItemsControl.Items>
  <ItemsControl.ItemTemplate>
    <DataTemplate DataType="{x:Type system:String}">
      <Label Height="50" Foreground="Black" Content="{Binding}" BorderThickness="1"
             BorderBrush="Black" VerticalContentAlignment="Center" />
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

enter image description here