2011-09-07 75 views
8

問題:在網格周圍添加ScrollViwer時,網格縮放會被取消!爲什麼我的ScrollViewer會破壞我的網格佈局? WPF

Eksampel: 我創建了一個網格寬度3列,1. coulymn應該總是比第2和3列大2倍! 如果沒有ScrollViewer,這總是如此,但添加它時,它允許每列決定其自己的大小。

<Window x:Class="alternatingGridRow.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="200" Width="Auto" Loaded="WindowLoaded"> 
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"> 
    <Grid x:Name="LayoutRoot" ShowGridLines="True"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" MinHeight="23" MaxHeight="60"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
      <TextBlock HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
      <TextBlock Foreground="Red" Grid.Column="1" HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
    </Grid> 
</ScrollViewer> 

正如你可以清楚地看到比例因子是完全錯誤的!由於2.列是大的!和3列是一些隨機的大小...

Wrong Scaling factors

對此有何建議是很好收到.... 乾杯馬丁

回答

3

好的,我明白你爲什麼柱大小擰了一個點。
但是..我想到了一個解決方案,因爲我看了你的帖子...

正如穆罕默德說,建立在我的網格固定的寬度,以及..我想我的網格有相同寬度的ScrollViewer除非它變小,然後我想讓scrollviewer發揮作用! 所以..我的解決辦法是:

MinWidth="500" Width="{Binding ActualWidth, ElementName=scrollviewer}" 

<Window x:Class="alternatingGridRow.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="200" Width="Auto"> 
<ScrollViewer x:Name="scrollviewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"> 
    <Grid x:Name="LayoutRoot" ShowGridLines="True" MinWidth="500" Width="{Binding ActualWidth, ElementName=scrollviewer}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" MinHeight="23" MaxHeight="60"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="2*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
      <TextBlock HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
      <TextBlock Foreground="Red" Grid.Column="1" HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" /> 
    </Grid> 
</ScrollViewer> 

</Window> 

(僅固定水平)

THX。

+0

很高興您找到解決方案,不要忘記接受解決方案;) –

5

目前的設置是錯誤的,因爲ScrollViewer不限制其子級的寬度和高度(即無限制),此外,Grid始終填充其父容器上可用的所有可用水平和垂直空間,這就是爲什麼你會看到這種奇怪的行爲。您必須執行以下操作之一:

  1. 要麼,請刪除您提到的ScrollViewer
  2. 或者,爲您的Grid設置固定的高度和寬度。
5

您正在要求網格爲每列分配無限空間的百分比。無限,因爲您的ScrollViewer上啓用了水平滾動功能,ScrollViewers的全部重點就是虛擬化空間。所以你要求它做甚至沒有意義。

相關問題