2016-02-08 105 views
2

我有一個應用程序,它使用Windows上的WPF作爲工具箱框架。現在我想以編程方式爲我的ScrollViewers設置滾動條的寬度。我發現很多示例通過XAML設置寬度。但是,我怎樣才能以編程方式定義滾動條的寬度?以編程方式設置滾動條的寬度

不幸的是我在ScrollViewer上找不到任何屬性或方法來設置滾動條的寬度。

var viewer = new ScrollViewer(); 
viewer.MagicProperty = 42; // Does not exist 

此外,SystemParameters上的所有屬性都是不可讀的。

VerticalScrollBarWidth.VerticalScrollBarWidth = 42; // Read-only 

編輯:WPF只是我的應用程序中的多個工具包框架之一。我使用自定義GUI抽象層來支持Windows(WPF),Linux(GTK#)和MacOS X(將來)。我的用戶界面以獨立於操作系統的方式進行封裝。因此使用XAML是沒有意義的。

回答

1

最簡單的方法是設置x:Name屬性,那麼你可以在你的代碼中訪問ScrollViewer

或使用綁定:如果你想與multile ScrollViewers並設置相同的值來操縱http://www.tutorialspoint.com/wpf/wpf_data_binding.htm

Binding將是有益的。

編輯: 您可以在您的代碼中創建ScrollViewer,然後設置其參數。但是你需要一種方法將其插入VisualTree和其他控件中。因此,您需要獲取某個容器的實例,然後使用它的Children.Add()方法

但是,我真的推薦儘可能多地使用XAML,並將代碼留給應用程序邏輯,而不是UI構建。

編輯2: 你可以嘗試:

  Style myStyle = new Style(typeof(ScrollBar)); 
      myStyle.Setters.Add(new Setter(WidthProperty, 40)); 

      scrollViewer.Style = myStyle; 

編輯3: 我找到了解決辦法。你的答案

Resources.MergedDictionaries.Add(Application.LoadComponent(new Uri(@"Dictionary.xaml", UriKind.Relative)) as 
       ResourceDictionary); 
+0

感謝:您可以添加ResourceDictionary.xaml而這種風格添加到它:

<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}"> <Setter Property="MinWidth" Value="35" /> <Setter Property="Width" Value="35" /> </Style> 

然後在運行時加載它,如下所示。不幸的是,我需要一種沒有任何XAML的方式。 – Martin

+0

你能否澄清一下你的意思是「沒有任何XAML」?我的方法是編程式的,你只需要一種方法來告訴哪個scrollViewer改變。 – Filip

+0

鏈接的網站顯示基於XAML示例的數據綁定教程。我需要純C#或VB.NET代碼,如_new ScrollViewer()。ScrollBarWith = 42_或_SystemParameters.ScrollBarWith = 42_。這兩個例子當然都不起作用。但我希望他們澄清我正在尋找的東西。 – Martin

相關問題