2016-09-05 7 views
0

ScrollViewer内のItemsControlのItemsSourceが変更されたときにスクロールの動作を変更しないモーダルダイアログでScrollViewerに問題が発生します。ScrollViewerがItemsControlの変更をスクロールしない

最初にダイアログを作成すると、ScrollViewerのスクロールバーはコンテンツのサイズに応じて正常に動作します。 ObservableCollectionにアイテムを追加すると、ItemsControlはコンテンツの変更にバインドされますが、ScrollViewerは変更に反応せず、スクロールバーをアクティブにします。 ObservableCollectionに

いくつかの項目は:

enter image description here

enter image description here

アプリケーションの再起動後:

enter image description here

詳細項目がのObservableCollectionに追加しました

<Grid x:Name ="Maingrid"> 
    <Grid.Resources> 
     <ResourceDictionary> 
      <!--Style for RadButtons--> 
      <Style TargetType="telerik:RadButton" x:Key="RadButtonStyle"> 
       <Setter Property="Margin" Value="10"/> 
       <Setter Property="Width" Value="95"/> 
       <Setter Property="Height" Value="Auto"/> 
       <Setter Property="HorizontalContentAlignment" Value="Center" /> 
      </Style> 
      <!--end of Style for RadButtons--> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="/PS.Common.Presentation;Component/Themes/Generic.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Grid.Resources> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="25" /> 
     <RowDefinition Height="200" /> 
     <RowDefinition Height="45" /> 
    </Grid.RowDefinitions> 
    <!--List--> 
    <ScrollViewer x:Name="LeftScrollViewer" Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 

     <ItemsControl ItemsSource="{Binding BaysAndSystems, NotifyOnSourceUpdated=True}"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 
         <CheckBox Grid.Column="0" IsChecked="{Binding Selected}" Content="{Binding Item.NameAndReference}" /> 
        </Grid> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 

    </ScrollViewer> 
    <!--Buttons--> 
    <StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center"> 
     <telerik:RadButton Content="{x:Static resx:Resources.Copy}" Command="{Binding CopyCommand}"  
           CommandParameter="{Binding}" Style="{StaticResource RadButtonStyle}" /> 
     <telerik:RadButton Content="{x:Static resx:Resources.Cancel}" Command="{Binding CopyCancledCommand}" 
           CommandParameter="{Binding}" Style="{StaticResource RadButtonStyle}" /> 
    </StackPanel> 

</Grid> 

私は、ScrollViewerのは、変更されたコンテンツに対応するために取得するために何ができますか?

答えて

0

ScrollViewerは、固定高さがGrid.Row="1"です。このグリッドの行の高さを*に変更しました。それは動作するはずです。 VerticalScrollBarVisibilityの別の値を試すこともできます。

+0

私は今、高さを '*'に設定し、 'VerticalScrollBarVisibility'を' Visible'に設定しようとしましたが、助けにはなりませんでした。 – qnyz

0

あなたの問題は、スクロールビューアを保持する行が、200ピクセルの定義にもかかわらず、その高さが増えていることです。 「*」に設定し、にプロパティMaxHeight="200"を設定してください。OKです。

<Grid.RowDefinitions> 
     <RowDefinition Height="25" /> 
     <RowDefinition Height="*" MaxHeight="200" /> 
     <RowDefinition Height="45" /> 
    </Grid.RowDefinitions> 
+0

'Column'がどこにあるのかわかりません。 MaxHeightを列に設定できますか? – qnyz

+0

申し訳ありませんが、私は行を意味します。 –

+0

私はあなたのコード例を試しましたが、違いはありません。 – qnyz

関連する問題