2013-04-18 22 views
0

我有一個包含標題區域和內容區域的頁面。內容區域只包含一個用戶控件。 我們有一個沿着AbstractClassA的類結構是所有要顯示的類的基類。抽象類B & C都從A繼承。 具體類B1和B2繼承自B,具體類C1和C2繼承自C.當包含多個用戶控件時,Silverlight ScrollViewer無法正常工作

此用戶控件包含許多控件,顯示A的信息以及兩個只有當顯示的類是相關類型時,纔會顯示其他控件B & C。

那些addituional控件然後顯示與其相應的抽象類相關的所有字段,並且還具有與具體類有關的附加控制,同樣僅當基礎類是正確類型時才顯示,然後具有與具體相關的字段類。

這一切都工作正常,但我們正在處理的一些類有很多領域,他們不適合在屏幕上了。所以,顯而易見的事情就是 - 將內容包裝在scrollviewer中。

唯一的問題是,這似乎並不奏效。

後續控件的可見性綁定到視圖模型上的屬性(通過布爾到可見性轉換器),該屬性確定正在處理的類的類型。回退值已摺疊,因此它們不可見。不知道所需的大小是否無法在隨後傳遞給scrollviewer時失敗?儘管設置爲自動,但滾動條並未出現。下面的xaml

<Grid x:Name="LayoutRoot"> 
    <!-- Divide the page into a row for the header and 1 further rows which are used to position the content --> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="{StaticResource HeaderRowHeight}" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="100" /> 
    </Grid.RowDefinitions> 


    <Grid Grid.Row="0" 
     Grid.Column="0" 
     Grid.ColumnSpan="2"> 
    <!-- Page header --> 
    </Grid> 

    <!-- Main page content follows --> 
    <Grid Grid.Row="1" 
     Width="auto"> 
    <ScrollViewer Height="700" 
        VerticalScrollBarVisibility="Auto"> 
     <dataEdit:CaseTypeInternalEditControl Height="Auto" /> 
    </ScrollViewer> 
    </Grid> 
</Grid> 

我也試過把scrollviewer放在用戶控件中,但無濟於事。我錯過了什麼?

回答

0

問題是不是從問題顯而易見,我會需要發佈後續的子控件,其知名度由此可以確定之一:

 <Canvas Visibility="{Binding Path=CaseIsB, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Collapsed}"> 
      <dataEditControls:CaseBEditControl DataContext="{Binding CaseBEditViewModel}" /> 
     </Canvas > 
     <Canvas Visibility="{Binding Path=CaseIsC, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Collapsed}"> 
      <dataEditControls:CaseCEditControl DataContext="{Binding CaseCEditViewModel}" /> 
     </Canvas > 

的問題在於Canvas對象有大小爲零 - 因此在可見時沒有向scrollviewer註冊任何內容。 只要我切換出一個網格,一切正常...

相關問題