2015-11-19 82 views
0

我想知道是否有一種方法可以不調整網格的寬度和高度,但是如果我的圖形變爲特定的寬度/高度,相應的scrollviewer出現,是否有可能在XAML中做,還是我需要在代碼後面做這個?所以,我希望我的控制有寬度,如果窗口得到下面這些話,我希望能夠使滾動的觀衆,我有當窗口大小減小時,滾動條或滾動查看器

XAML

<ScrollViewer x:Name="MyScrollViewer" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled"> 
    <Grid Background="White" x:Name="OuterGrid"> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="70"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 

<Grid Background="White" Grid.Row="1" x:Name="UIWindow" Grid.ColumnSpan="2"> 

      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition/> 
       <RowDefinition/> 
       <RowDefinition/> 
       <RowDefinition/> 
       <RowDefinition/> 
      </Grid.RowDefinitions> 

      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="1.2*"/> 
       <ColumnDefinition Width="1.2*"/> 
       <ColumnDefinition Width="1.5*"/> 
       <ColumnDefinition Width="1.5*"/> 
      </Grid.ColumnDefinitions> 

<TextBlock HorizontalAlignment="Left" Margin="25,3,0,2" Height="17" VerticalAlignment="Top" Width="70" Text="Facies" Grid.Column="0" Grid.Row="0" FontFamily="{StaticResource FontFamily}"/> 
      <Path Data="M2.4,62 L103.4,62" HorizontalAlignment="Left" Height="1" Margin="5,20,0,0" Stretch="Fill" Stroke="#A8A8A8" VerticalAlignment="Top" Width="200" Grid.Column="0" Grid.Row="0"/> 
      <Controls:FaciesControl x:Name="FaciesFilter" HorizontalAlignment="Left" Margin="10,25,0,0" VerticalAlignment="Top" Height="300" Width="195" Grid.Row="0" Grid.Column="0" Grid.RowSpan="3"/> 

      <TextBlock Grid.Column="0" Grid.Row="2" Text="Zone Legend:" Width="150" Height="15" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10" FontFamily="{StaticResource FontFamily}"/> 
      <Path Data="M2.4,62 L103.4,62" HorizontalAlignment="Left" Height="1" Margin="5,27,0,0" Stretch="Fill" Stroke="#A8A8A8" VerticalAlignment="Top" Width="200" Grid.Column="0" Grid.Row="2"/> 
      <Controls:LegendControl x:Name="LegendFilter" HorizontalAlignment="Left" Height="450" Margin="5,50,0,0" Grid.Row="2" Grid.Column="0" VerticalAlignment="Top" Width="224" Grid.RowSpan="4"/> 

      <TextBlock Text="Sequence Stratigraphy" FontFamily="{StaticResource FontFamily}" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="5,5,0,0" Grid.Column="1" Grid.Row="0"/> 
      <Path Data="M2.4,62 L103.4,62" HorizontalAlignment="Left" Height="1" Margin="5,20,0,0" Stretch="Fill" Stroke="#A8A8A8" VerticalAlignment="Top" Width="355" Grid.Column="1" Grid.Row="0"/> 
      <Stratigraphy:StratiGraphControl x:Name="stratiGraphControl" Grid.Row="0" Grid.Column="1" Grid.RowSpan="4" Margin="0,40,40,10"/> 
+0

您有'FrameworkElement'的屬性,如'MaxWidth''MaxHeight' [FrameworkElement.MaxWidth](https://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.maxwidth%28v=vs。 110%29.aspx) – kirotab

+0

是的,但如果我在更大的屏幕上有應用程序,那麼如果它在更大的屏幕上顯示,當屏幕最大化時,它會看起來很小,當它最大化時,控件是完美的,只是當我縮小尺寸時的窗口 –

+0

所以我看到你的控件沒有響應,而且它們的值已經設置好了,你只是想在窗口尺寸變小時顯示/隱藏ScrollViewer?如果這是正確的兩個選項想到1.綁定到您的主容器的實際寬度,並使用轉換器將滾動查看器的可見性設置爲適當的值。 2.使用窗口的'SizeChanged'事件並在你的代碼中設置適當的可見性到'ScrollViewer'。第二個選項更容易,我不確定第一個選項是否可以工作(我認爲我有一些與'ActualWidth'有關的問題,它沒有觸發它的更改處理程序) – kirotab

回答

1

當您在意見中的要求的第二種方法的例子。這只是做滾動查看器的邏輯,所以我不知道這是否足夠你的情況,但這是你所要求的,所以這裏是:

這段代碼將隱藏/顯示垂直/水平滾動條,如果窗口大小低於/上面給出的值

XAML - 把這個在你的窗前

SizeChanged="Window_SizeChanged"  

代碼

private void Window_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    if(e.NewSize.Width <= 500) 
    { 
     MyScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible; 
    } 
    else 
    { 
     MyScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled; 
    } 
    if (e.NewSize.Height <= 500) 
    { 
     MyScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; 
    } 
    else 
    { 
     MyScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled; 
    } 
} 
背後
+0

非常感謝:) –

+0

沒問題。順便說一句,也許你必須在第一次啓動時添加相同的邏輯,這意味着如果調整大小不會觸發並且用戶在小屏幕中啓動應用程序,則它將不會顯示滾動條,直到用戶現在調整大小。 – kirotab