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? :-)

Antworten auf die Frage(5)

Ihre Antwort auf die Frage