2012-03-16 9 views
1

StackPanelをitemControlテンプレートで置き換えると、スクロールが正しく機能しなくなりました。StackPanelをItemsControlに変換するときに問題が発生するScrollviewer

旧:

<ScrollViewer x:Name="HorizontalScroller" 
      Grid.Column="1" 
      VerticalScrollBarVisibility="Disabled" 
      HorizontalScrollBarVisibility="Hidden" 
      CanContentScroll="True" Margin="2.4,0,1.2,0"> 

      <StackPanel x:Name="spHorizontal" Orientation="Horizontal" UseLayoutRounding="False" 
         ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="862.4"/>    
     </ScrollViewer> 

新:

<ScrollViewer x:Name="HorizontalScroller" Grid.Column="1" VerticalScrollBarVisibility="Disabled" 
      HorizontalScrollBarVisibility="Hidden" CanContentScroll="True" Margin="2.4,0,1.2,0" > 

      <!---RegBtns verwijst naar de ObservableCollection die alle registration buttons bevat--> 
      <ItemsControl Name="ItemControlRegistration" ItemsSource="{Binding ElementName=Window, Path=RegBtns}" Width="834.4"> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
         <StackPanel x:Name="spHorizontal" Orientation="Horizontal" UseLayoutRounding="False" ScrollViewer.VerticalScrollBarVisibility="Disabled" 
            Width="834,4" /> 
        </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel>      
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <!--template custom style button: --> 
         <Button x:Name="RegistrationTestButton" Content="TEST" HorizontalAlignment="Left" Height="73" Width="151" 
           Margin="10,0,5,0" Style="{DynamicResource ButtonStyleRegistration}" 
           Click="RegistrationTestButton_Click">        
         </Button> 
        </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl>    
     </ScrollViewer> 

問題は、それが完全にボタンを表示しませんです。 1-5をブラウズして右を押すと、2-6が直接表示されません。 つまり、私が右を押すと、一度に完全なボタンnr 6を見たいと思う。基本的には基本的に右(または左)にスクロールしてゆき、ボタンの部分がゆっくりと表示されます。 私が次のボタンを即座に表示したいときに押します。

これらの急激な変化は、どうして正確に起こりましたか?

よろしくお願いいたします。

答えて

0

なぜscrollViewerをItemsControlのテンプレートに入れませんか?私は次のようなsthを意味する

<ItemsControl Name="ItemControlRegistration" ItemsSource="{Binding ElementName=Window, Path=RegBtns}" Width="834.4"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <ScrollViewer x:Name="HorizontalScroller" Grid.Column="1" VerticalScrollBarVisibility="Disabled" 
        HorizontalScrollBarVisibility="Hidden" CanContentScroll="True" Margin="2.4,0,1.2,0" > 
        <StackPanel x:Name="spHorizontal" Orientation="Horizontal" UseLayoutRounding="False" ScrollViewer.VerticalScrollBarVisibility="Disabled" 
           Width="834,4" /> 
       </ScrollViewer> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel>      
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <!--template custom style button: --> 
        <Button x:Name="RegistrationTestButton" Content="TEST" HorizontalAlignment="Left" Height="73" Width="151" 
          Margin="10,0,5,0" Style="{DynamicResource ButtonStyleRegistration}" 
          Click="RegistrationTestButton_Click">        
        </Button> 
       </DataTemplate> 
       </ItemsControl.ItemTemplate> 
</ItemsControl>    
+0

動作していないようです。また、私はこのスクロールビューアにコードの背後からアクセスできる必要があります。 – Rakr

+1

これはまさに私がやったことですが、コードビハインドからscrollviewerにアクセスするのに困っています。 LineLeftプロパティとLineRightプロパティを特定のボタンに設定するには、これが必要です。 "Visual Studio for ItemsPanelTemplateにパネルが含まれている必要があります。 'System.Windows.Controls.ScrollViewer'はパネルではありません。wpf" – Rakr

+0

ちょうど、とラップします。 – pamidur

関連する問題