ScrollViewer
aのプロパティをListBox
C#から変更したいのですが。
この質問はStackoverflowで見つかりました。私は受け入れられた答えのアドバイスを受け取りScrollViewer
、サブクラスのプロパティとしてを公開しました。ただし、以下に示す例では、これは機能していないようです。その質問のコメントのいくつかは、このテクニックが機能しなかったとも述べています。
XAML:
<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>
C#:
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);
}
}
}
「ScrollViewerの確認」ボタンをクリックすると、「null」と表示されます。つまり、ScrollViewer
は取得されませんでした。
どうすればそのくそにたどり着くことができScrollViewer
ますか?:-)