2016-05-09 38 views
0

場景:
我正在WinRT/Win8中的商店應用程序工作。ScrollView的孩子沒有適當調整窗口大小WinRT

我有一個ScrollView,使用自定義UserControl子裏面 - 所有都作爲一個「主」UserControl一部分。

當主UserControl(與ScrollView - >子UserControl)中被初始化/導航到 - 即使與App寬度全屏;根據需要,UserControl的寬度爲ScrollView。下面的圖片:

ScrollView本身就是一個Grid內,並與應用程序窗口的整個寬度保持,甚至當它的調整 - 根據需要。

問題:
我遇到的問題是,當我水平調整應用窗口,孩子UserControl不保持相同的寬度爲其父ScrollView的。

這導致ScrollView然後有水平滾動條 - 我不想要。

我想保住孩子的寬度與ScrollView的寬度沒有水平滾動條(如Image 2)內部約束。

標記與此類似(我已經剝離下來的可讀性):

<Grid> 
    <!-- Some row/column definitions in here --> 
    ... 
    <!-- A header TextBlock --> 
    ... 
    <ScrollViewer x:Name="scrlTableRows" Grid.ColumnSpan="3" Grid.Row="1" 
        HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" 
        Padding="66,0,66,40" ZoomMode="Disabled"> 
     <local:MyCustomUserControl Margin="0,10,0,10" HorizontalAlignment="Stretch" /> 
    </ScrollViewer> 
    ... 
    <!-- Just a button here--> 
</Grid> 

我已經嘗試設置(對孩子定製UserControl):

  • Width="{Binding Path=ActualWidth, ElementName=scrlTableRows}" 孩子不是設置在的全寬度與啓動(這是我所需要的),並且不與其父要麼調整寬度 - 給我的滾動條

  • Width="{Binding Path=Width, ElementName=scrlTableRows}"孩子確實開始在父的全寬,但沒有按」牛逼調整 - 給我的滾動條

  • 我也試着放置UserControl一個Grid內(內ScrollView),以及許多其他HorizontalAligmentWidth性能。

所有無濟於事。

沒有其他類似的情況/答案從其他有幫助的研究員在StackOverflow工作。

顯然,我需要垂直滾動條 - 這是顯而易見的;之前有人問。

有人可以給我任何指針嗎?

更新

這裏是習俗UserControl的XAML中,如提出要求@LovetoCode:

<UserControl *usual user control declaritive stuff in here*> 
    <UserControl.Resources> 
     <CollectionViewSource x:Key="FieldViewModelsSource" Source="{Binding ItemToEdit.FieldViewModels}"/> 

     <datatemplateselectors:FieldViewModelDataTemplateSelector 
      x:Key="FieldViewModelDataTemplateSelector" 
      AudioFieldTemplate="{StaticResource TableRowAudioFieldDataTemplate}" 
      CheckboxFieldTemplate="{StaticResource TableRowCheckboxFieldDataTemplate}" 
      DatasetFieldTemplate="{StaticResource TableRowDatasetFieldDataTemplate}" 
      DateFieldTemplate="{StaticResource TableRowDateFieldDataTemplate}" 
      DateTimeFieldTemplate="{StaticResource TableRowDateTimeFieldDataTemplate}" 
      DropdownFieldTemplate="{StaticResource TableRowDropdownFieldDataTemplate}" 
      FileFieldTemplate="{StaticResource TableRowFileFieldDataTemplate}" 
      GpsFieldTemplate="{StaticResource TableRowGpsFieldDataTemplate}" 
      GridFieldTemplate="{StaticResource TableRowGridFieldDataTemplate}" 
      ImageFieldTemplate="{StaticResource TableRowImageFieldDataTemplate}" 
      LabelFieldTemplate="{StaticResource TableRowLabelFieldDataTemplate}" 
      MultichoiceCheckboxFieldTemplate="{StaticResource TableRowMultichoiceCheckboxFieldDataTemplate}" 
      RadioFieldTemplate="{StaticResource TableRowRadioFieldDataTemplate}" 
      RangeSliderFieldTemplate="{StaticResource TableRowRangeSliderFieldDataTemplate}" 
      SignatureFieldTemplate="{StaticResource TableRowSignatureFieldDataTemplate}" 
      SplitterFieldTemplate="{StaticResource TableRowSplitterFieldDataTemplate}" 
      TextFieldTemplate="{StaticResource TableRowTextFieldDataTemplate}" 
      TextareaFieldTemplate="{StaticResource TableRowTextareaFieldDataTemplate}" 
      TimeFieldTemplate="{StaticResource TableRowTimeFieldDataTemplate}" 
      VideoFieldTemplate="{StaticResource TableRowVideoFieldDataTemplate}"/> 
    </UserControl.Resources> 

    <Grid> 
     <ItemsControl ItemsSource="{Binding Source={StaticResource FieldViewModelsSource}}" 
         ItemTemplateSelector="{StaticResource FieldViewModelDataTemplateSelector}"> 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Margin="10,0,10,0" Orientation="Vertical" /> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
     </ItemsControl> 
    </Grid> 
</UserControl> 

注意,DataTemplate資源在UserControl資源定製UserControl S中的加載基於ViewModel中的對象(如my original image 1)。

+0

嘗試Horizo​​ntalContentAlignment =「拉伸」 – Archana

+0

在哪個控件上?如果你對自定義的一個,我想我已經有... –

+0

Archana

回答

0

所以,非常感謝@LovetoCode,我設法解決了我的問題。儘管如此,我還是試圖克服2天頭痛和頭撞傷辦公桌的挫傷。

我拋棄了ScrollViewer,只是用我的自定義UserControl

<local:TableRowUserControl Grid.Row="1" Grid.ColumnSpan="2" 
          Margin="66,0,66,40" HorizontalContentAlignment="Stretch" /> 

然後,@LovetoCode建議 - 我用了ListView代替ItemsControl。我最真誠的道歉。我不想第一次使用一個,因爲...

主要問題是與ListView的默認樣式有懸停和水龍頭效果;我不需要這些。我嘗試着避開禁用懸停/輕拍從以前的失敗經驗 - 悲慘地。

經過一番Google搜索(其他搜索引擎可用)之後,我發現了一個簡單的解決方案,可以非常輕鬆地完成此操作。

我設法做到這一點是這樣的:

<ListView x:Name="lstFieldViewModels" ItemsSource="{Binding Source={StaticResource FieldViewModelsSource}}" SelectionMode="None" 
         ItemTemplateSelector="{StaticResource FieldViewModelDataTemplateSelector}" IsSwipeEnabled="False"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      <Setter Property="Background" Value="Transparent" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ListViewItem"> 
         <ContentPresenter /> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Margin="10,0,10,0" Orientation="Vertical" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 

再次,道具@LovetoCode。金星和程序員指向你:)