2013-05-06 37 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