2012-04-24 40 views
1

亞當森「WPF 4偷跑」的第10章包括控制ListBox滾動行爲的這個XAML例如:控制列表框滾動行爲

<Window x:Class="NathanControllingScrollingBehavior.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 

    <ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
      ScrollViewer.VerticalScrollBarVisibility="Disabled" 
      ScrollViewer.CanContentScroll="False" 
      ScrollViewer.IsDeferredScrollingEnabled="True"> 
     ... 
    </ListBox> 

</Window> 

沒有在書的等效C#示例。我做了一些研究,發現了一些迂迴的方法來做到這一點。請參閱this SO question瞭解適用於我的兩種方法。然而,這些方法看起來有些ha。。在XAML中調整這些屬性非常簡單,但是來自C#的尷尬。

這僅僅是一個WPF區域,它只能用於XAML而不是C#?任何人都可以解釋XAML/C#之間使用這些屬性的不一致嗎?這僅僅是對WPF團隊的監督嗎?

回答

2

你可以這樣做。

ListBox listBox1 = new ListBox(); 

listBox1.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, 
ScrollBarVisibility.Disabled); 

listBox1.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, 
ScrollBarVisibility.Disabled); 

listBox1.SetValue(ScrollViewer.CanContentScrollProperty, false); 

listBox1.SetValue(ScrollViewer.IsDeferredScrollingEnabledProperty, true); 
+0

謝謝Nikhil!太棒了。 – dharmatech 2012-04-25 07:08:13