自動拡張列を使用して単純な ListView を作成すると、最初の「バッチ」アイテムが追加されるだけで自動拡張されます。なぜこれが起こるのですか、それを修正する方法はありますか?
ObservableCollection (例を示します) を使用して、LstItems.Items に手動でアイテムを追加しようとしましたが、同じ動作です。初めて BtnAdd をクリックすると、期待どおりに自動拡張されますが、その後はそうではありません。
XAML:
<ListView Margin="12,12,12,41" Name="LstItems">
<ListView.View>
<GridView>
<GridViewColumn Width="100" Header="Row 1" DisplayMemberBinding="{Binding Path=Col1}" />
<GridViewColumn Width="Auto" Header="Row 2" DisplayMemberBinding="{Binding Path=Col2}" />
</GridView>
</ListView.View>
</ListView>
コード:
public partial class Window1 : Window
{
private readonly ObservableCollection<MyData> _data = new ObservableCollection<MyData>();
private const int NumRepeats = 2;
private const int EnumerationIncrement = 3;
private int _enumerationCount = 3;
public Window1()
{
InitializeComponent();
LstItems.ItemsSource = _data;
}
private void BtnAdd_Click(object sender, RoutedEventArgs e)
{
for (int i = 1; i <= NumRepeats; i++)
{
string data = String.Join(", ", Enumerable.Repeat("Test Data", _enumerationCount));
_data.Add(new MyData { Col1 = "Test", Col2 = data });
_enumerationCount += EnumerationIncrement;
}
}
}