2013-05-06 70 views
4

我有下面的XAML代码(也充斥着一些假的内容来证明这个问题)萎缩:WPF布局:元素越来越多,但不正确

<Window x:Class="WpfWatchBird.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="378" Width="728" 
     Name="frmMainList"> 
    <Grid Name="grdMainLayout"> 
     <ListBox Name="lstData" SelectionChanged="lstData_SelectionChanged" HorizontalAlignment="Stretch"> 
      <ListBoxItem HorizontalContentAlignment="Stretch"> 
       <ListBoxItem.Content> 
        <Grid HorizontalAlignment="Stretch"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="100"/> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="25"/> 
          <RowDefinition Height="100"/> 
          <RowDefinition Height="25"/> 
         </Grid.RowDefinitions> 

         <Label Content="nick" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Teal" Grid.Column="0" Grid.Row="0" Margin="0" Padding="0"/> 
         <Label Content="kategória" VerticalAlignment="Center" Foreground="Green" Grid.Column="1" Grid.Row="0" Margin="10,0,0,0" Padding="0"/> 
         <Label Content="stav záznamu" Foreground="Gray" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0" Padding="0" Grid.Column="2" Grid.Row="0"/> 
         <Label Content="1.1. 2013 12:00" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,5,0" Padding="0" Grid.Column="3" Grid.Row="0"/> 

         <Image HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0" Grid.Row="1" Source="http://www.birdz.sk/la/bezfotky.gif" /> 
         <StackPanel x:Name="spItemText" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3" HorizontalAlignment="Stretch"> 
          <TextBlock MaxWidth="{Binding ElementName=spItemText,Path=ActualWidth}" FontSize="18" TextWrapping="Wrap"> 
           <TextBlock.Text>Nadpis blogu, konečne, dámy a páni :)</TextBlock.Text> 
          </TextBlock> 
          <TextBlock HorizontalAlignment="Stretch" xml:space="preserve" TextWrapping="Wrap" Margin="10,0,0,0" 
             Padding="0" VerticalAlignment="Top" 
             MaxWidth="{Binding ElementName=spItemText, Path=ActualWidth}"> 
           <TextBlock.Text>Preview textu blogu, blablabla, blabla, bude to pekné a krásne 
a bude to vedieť robiť aj newliny, len ešte nejak spraviť zarovnanie, aby nebolo... aha, ono nie je, on mi len kvôli xml:space preserve... A už mi aj krásne funguje textwrapping, keď som poodstraňoval zopár nepotrebných 
...hmm... tak jeden riadok to wraplo dobre, ale ten ďalší už nie, zaujímavé... 
           </TextBlock.Text> 
          </TextBlock> 
         </StackPanel> 
         <Label Grid.Column="1" Grid.Row="2"> 
          <Hyperlink>Otvor originál</Hyperlink> 
         </Label> 
         <Label Grid.Column="3" Grid.Row="2" HorizontalAlignment="Right"> 
          <Hyperlink>Otvor zložku so zálohou</Hyperlink> 
         </Label> 
        </Grid> 
       </ListBoxItem.Content> 
      </ListBoxItem> 
      <ListBoxItem Content="Menu 2" /> 
     </ListBox> 
    </Grid> 
</Window> 

当越来越多的窗口,它会调整正确,但在收缩它拒绝这样做。我发现this question which seems very much related,但我不认为那里的答案是一个正确的答案(另外,我不能评论问题/答案,否则,我会写在那里)。 “

”答案“表示,默认情况下,ItemsControls只能增长,,但”默认情况下“表示有一种方法可以覆盖此,但答案并不能解释这是如何完成的,找不到任何关于它的任何想法?我想在XAML中做到这一点,它应该有可能没有代码隐藏,IMO ...

+1

尝试在列表框中设置ScrollViewer.Horizo​​ntalScrollBarVisibility =“Disabled”。 – XAMeLi 2013-05-06 21:03:07

+0

@XAMeLi非常感谢您,先生,您是否再次将其写成不是评论,而是一个答案,以便将其标记为正确的答案? – 2013-05-07 01:03:58

回答

8

在列表框中设置ScrollViewer.HorizontalScrollBarVisibility="Disabled"

原因是滚动查看器(这是ListBox模板的一部分)将“更喜欢”打开水平滚动条而不是收缩内容。

+0

男人,我花了半天的时间试图溢出TreeViewItem中的TextBlock文本,但没有运气。我甚至不知道要在网络上搜索什么。我把'ScrollViewer.Horizo​​ntalScrollBarVisibility'设置为'Hidden'而不是'Disabled' ......谢谢soooo! – Daniel 2013-06-06 11:34:44