2016-05-09 4 views
0

シナリオ:
私はWinRT/Win8のStore Appで作業しています。ScrollViewの子がウィンドウのサイズを適切に変更していないWinRT

私は内部のカスタムUserControl子で、ScrollViewを持っている - 1 UserControl「メイン」の一環として、すべての。 ; - 初期化されるで/に移動してもアプリ幅ないフルスクリーンで - (>子UserControlScrollViewで)主UserControl

UserControlは希望の通りScrollViewの全幅にあります。下の画像: - 必要に応じて

ScrollView自体は、それがリサイズだ場合でも、Grid内にあり、アプリケーションウィンドウの幅いっぱいに保持します。

問題:
私がいる問題は、私は水平にアプリケーションウィンドウのサイズを変更する場合、子UserControlは親ScrollView年代と同じ幅を保持していないということです。

これにより、ScrollViewには水平スクロールバーが表示されます。これは望ましくありません。

私は(Image 2のように)no水平スクロールバーでScrollViewの幅の内側に拘束されることを子供の幅を維持したいです。

マークアップは(私は読みやすくするためにストリップダウンしている)次のようになります。

<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}"をスクロールバー子は、「親の全幅でスタートを行いますが、doesnの - (私は必要なものである)で開始する、とその親のどちらかで幅を変更しませんトンサイズを変更 - 私を与えることは、私も他の多くのHorizontalAligmentWidthの特性の中で、(ScrollView以内)GridUserControlを配置しようとしている

  • をスクロールバー。

すべては無駄です。

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> 

UserControl資源でDataTemplateリソースがロードされているカスタムUserControl sがあること(my original image 1のような)ViewModelのオブジェクトに基づいています。

+0

試してみてくださいHorizo​​ntalContentAlignment = "ストレッチ" – Archana

+0

どのコントロールですか?カスタムのものについては、私はすでに持っていると思います... –

+0

On Archana

答えて

0

@LovetoCodeに大きな感謝の気持ちで、私は私の問題を解決することができました。しかし、私の2日の頭痛や傷は、机の上で頭を打つのをやめようとしています。

私はScrollViewerを不時着し、ちょうど私のカスタムUserControl使用:@LovetoCodeが示唆したように、その後

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

を - 私が代わりにItemsControlListViewを使用。私の最も誠実な謝罪。なぜなら、最初の1回は使いたくなかったからです...

主な問題は、ホバーとタップの効果を持たせるためにListViewの既定のスタイルにありました。私は必要ではなかった。私は、以前の失敗の経験から、ホバー/タップを無効にすることを明らかにしました - 悲惨なことに。

グーグル(他の検索エンジンが利用可能)のビットの後、私はこれを非常に簡単に行う簡単な解決策を見つけました。私はこのようにそれを行うために管理

:再び

<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に小道具。あなたのための金星とプログラマーのポイント:)

関連する問題