以下のコードは、問題の完全な表現です。基本的に、ScrollViewer 内に ListBox がある場合、ListBox は独自のスクロールバーを表示しません。むしろ、親 ScrollViewer のスクロールバーに依存します。私の状況では、MinHeight/MinWidth に違反したときにスクロールバーが表示されるように、コントロール全体を ScrollViewer にラップしています。ListBox は、UserControl 内の多数のコントロールの 1 つにすぎず、ListBox 内の項目と一致するように UserControl を広い比率にジャンプさせたくありません。ListBox に独自のスクロールバーを強制的に使用させるには、以下のコードに何を追加しますか?
using System;
using System.Windows;
using System.Windows.Controls;
namespace TestExpanderWidth
{
class Program
{
[STAThread]
static void Main()
{
var listbox = new ListBox { Margin = new Thickness(10.0), MinWidth = 400 };
listbox.Items.Add(new string('c', 3000));
var sv = new ScrollViewer {HorizontalScrollBarVisibility = ScrollBarVisibility.Auto, VerticalScrollBarVisibility = ScrollBarVisibility.Auto};
sv.Content = listbox; // remove for test
var window = new Window { Width = 600, Height = 400 };
window.Content = sv; // remove for test
//window.Content = listbox; // add for test
var application = new Application();
application.Run(window);
}
}
}