2016-05-09 2 views
0

Сценарий:
Я работаю над App Store в WinRT/Win8.Ребенок ScrollView не изменяет размер с помощью окна Resize WinRT

У меня есть ScrollView с пользовательскими UserControl ребенком внутри - все в рамках одного «основных»UserControl.

Когда главный UserControlScrollView -> ребенком UserControl) в инициализируются/перемещения между ними - даже с App шириной не полноэкранных; UserControl находится на полной ширине ScrollView - по желанию. Изображения ниже:

ScrollView сам по себе находится в пределах Grid и сохраняет при полной ширине окна App, даже когда он изменяется - по желанию.

Выпуск:
Проблема у меня в том, что при изменении размера окна приложения по горизонтали, ребенок UserControl не сохраняет ту же ширину, как его родитель ScrollView «с.

Это приводит к тому, что ScrollView имеет горизонтальные полосы прокрутки, которые я не хочу.

Я хочу, чтобы сохранить ширину ребенка быть связан внутри ширины ScrollView без какой-либо горизонтальной полосы прокрутки (как в Image 2).

Markup похож на это (я разделась для удобства чтения):

<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}" Ребенок не является установлен на полную ширину ScrollView начать с (что мне нужно), и не изменить ширину с его родителем либо - дает мне ScrollBars

  • Width="{Binding Path=Width, ElementName=scrlTableRows}"Ребенок делает старт на всю ширину родителя, но Безразлично» т размер - даешь мне ScrollBars

  • Я также попытался поместить UserControl внутри GridScrollView), среди многих других HorizontalAligment и Width свойств.

Все безрезультатно.

Другие похожие ситуации/ответы не работали с другими полезными ребятами в StackOverflow.

Очевидно, мне нужны вертикальные полосы прокрутки - как это очевидно; прежде чем кто-либо спросит.

Может ли кто-нибудь дать мне какие-либо указатели, пожалуйста?

Update:

Вот обычай UserControl «s 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

Try HorizontalContentAlignment = "Stretch" – Archana

+0

На каком контроле? Если вы говорите об этом, я думаю, что у меня уже есть ... –

+0

On 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. Золотая звезда и программист указывают на вас :)

Смежные вопросы