Auf den ScrollViewer einer ListBox über C # zugreifen
Ich möchte die Eigenschaften von a ändernScrollViewer
von aListBox
von C #.
ich fanddiese Frage hier auf Stackoverflow. Ich nahm den Rat der akzeptierten Antwort an und deckte das aufScrollViewer
als Eigentum einer Unterklasse. Dies scheint jedoch in dem unten gezeigten Beispiel nicht zu funktionieren. Einige der Kommentare in dieser Frage besagen auch, dass diese Technik nicht funktioniert hat.
XAML:
<code><Window x:Class="StackoverflowListBoxScrollViewer.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"> </Window> </code>
C #:
<code>using System; using System.Windows; using System.Windows.Controls; namespace StackoverflowListBoxScrollViewer { public class MyListBox : ListBox { public ScrollViewer ScrollViewer { get { return (ScrollViewer)GetTemplateChild("ScrollViewer"); } } } public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var myListBox = new MyListBox(); Content = myListBox; myListBox.Items.Add(new Button() { Content = "abc" }); myListBox.Items.Add(new Button() { Content = "abc" }); myListBox.Items.Add(new Button() { Content = "abc" }); myListBox.Items.Add(new Button() { Content = "abc" }); myListBox.Items.Add(new Button() { Content = "abc" }); var button = new Button() { Content = "Check ScrollViewer" }; button.Click += (s, e) => { if (myListBox.ScrollViewer == null) Console.WriteLine("null"); }; myListBox.Items.Add(button); } } } </code>
Wenn ich auf die Schaltfläche "ScrollViewer überprüfen" klicke, wird "null" ausgegeben. Das heißt, dieScrollViewer
wurde nicht abgerufen.
Wie komme ich dazu, verdammtScrollViewer
? :-)