2011-06-30 101 views
2

我有一個包含按鈕的水平堆棧面板。WPF中的水平滾動按鈕

我需要能夠滾動這個向右或向左的按鈕旋轉通過堆疊面板,因爲有更多的按鈕比屏幕上有空間。

使用水平滾動條不是一個選項,因爲它破壞了應用程序的外觀並且不會以循環方式一直旋轉。

  • 我無論怎樣才能改變滾動條只需在右手側的右箭頭,並在左手側的左箭頭來處理滾動並沒有完全旋轉,所有按鈕。即像普通的滾動條一樣工作,但看起來更好。 例如。 < < [BTN] [BTN] [BTN] >>

  • 或者有一種方法或旋轉的按鈕以圓形方式,因此沒有真正開始或結束按鈕的水平收集和某種方式爲用戶移動他們可以看到的按鈕的位置。

容器控件不必是一個堆棧面板,它只是最初按鈕的最佳容器。

Xmal和樣式將是我的第一選擇,但是使用後面的代碼沒有問題。

回答

0

製作自己的自定義滾動按鈕是一個問題? 如果沒有,你可以創建一個ItemsControl的,在設置ItemsPanel的風格

<ItemsPanelTemplate x:Key="ItemsPanelStyle"> 
     <StackPanel Orientation="Horizontal"></StackPanel> 
    </ItemsPanelTemplate> 

和ItemsControl中的

<ScrollViewer 
    x:Name="PART_ScrollViewer" 
    HorizontalScrollBarVisibility="Hidden" 
    VerticalScrollBarVisibility="Hidden" 
    CanContentScroll="True" 
    > 
     <ItemsPresenter/> 
    </ScrollViewer> 

工具欄按鈕的控件模板將是ItemsControl的實際的ItemsSource。如果你在現在模板創建一個按鈕(向右滾動,你需要滾動按鈕),並在其上的命令你執行

ScrollViewer myViewer = GetTemplatedPart("PART_ScrollViewer"); 
if(myViewer != null) 
{ 
    myViewer.LineRight(); 
} 

這應該每個元素滾動,直到你的按鈕列表的末尾權(注意優點:不管元素的寬度是多少)。 您可以對左側做同樣的事情。

HTH,daniell