コード ビハインドに基づいて ComboBox をバインドしています。以下は、私の XAML とコード ビハインドです。
<Window x:Class="ComboBoxBindingDatabase.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">
<Grid>
<ComboBox Height="29" HorizontalAlignment="Left" Margin="135,60,0,0" Name="comboBox1" VerticalAlignment="Top" Width="194" IsEditable="True"/>
<TextBox Height="39" HorizontalAlignment="Left" Margin="135,159,0,0" Name="textBox1" VerticalAlignment="Top" Width="194" />
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="384,165,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
<TextBox Height="35" HorizontalAlignment="Left" Margin="368,0,0,172" Name="textBox2" VerticalAlignment="Bottom" Width="115" />
</Grid>
コードビハインド:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
BindComboBox(comboBox1);
}
ArrayList b = new ArrayList();
public void BindComboBox(ComboBox comboBoxName)
{
b.Add("a");
b.Add("b");
b.Add("c");
b.Add("d");
comboBoxName.ItemsSource = b;
comboBoxName.DisplayMemberPath = Name;
comboBoxName.SelectedValuePath = Name;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
b.Add(textBox2.Text);
foreach (string s in b)
{
comboBox1.ItemsSource = b;
comboBox1.DisplayMemberPath = Name;
comboBox1.SelectedValuePath = Name;
}
}
}
そのため、最初にプロジェクトを実行すると、ComcoBox に a、b、cd がドロップダウン リストとして表示されます。しかし、テキストボックスに新しい文字を入力してボタンをクリックすると、ArrayList b が新しい文字をリストに追加し、コンボボックスを再バインドしようとしていますが、機能しません。ArrarList b がインクリメントするのを見たと思った a、b、c、d がまだ表示されています。
ComboBox が再バインドされないのはなぜですか? 単純に item.add メソッドではなく、Code Behind に基づいて ComboBox に要素を動的に追加する方法はありますか。
前もって感謝します。