Internet Explorerの検索ボックスと同様に、最後に入力した10個のエントリを保持するテキストボックスがあります。ユーザーはドロップダウンメニューをクリックして、最後の10個のエントリを表示できます。ドロップダウンメニューはコンボボックスです。コンボボックスItemssourceにバインドされた文字列のObservableコレクションを作成しました。以下はコードです。
Xaml
<Grid x:Name="TextBox_grid" Margin="0,0,40,0" Width="360" Height="23">
<ComboBox Name="cb" Margin="0,0,-29,0" Style="{DynamicResource Onyx_Combo}" ItemsSource="{Binding TextEntries, ElementName=TheMainWindow, Mode=OneWay}" IsEditable="False" Visibility="Visible" />
<Rectangle Fill="#FF131210" Stroke="Black" RadiusX="2" RadiusY="2"/>
<TextBox Name=UniversalTextBox Margin="0" Background="{x:Null}" BorderBrush="{x:Null}" FontSize="16" Foreground="#FFA0A0A0" TextWrapping="Wrap" PreviewKeyDown="TextBox_PreviewKeyDown"/>
</Grid>
コード
public partial class Window1 : Window
{
private ObservableCollection<string> m_TextEntries = new ObservableCollection<string>();
public Window1()
{
InitializeComponent();
}
public ObservableCollection<string> TextEntries
{
get { return m_TextEntries; }
}
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox == null)
return;
if (e.Key == Key.Enter)
{
PopulateHistoryList(textBox.Text);
e.Handled = true;
}
if (e.Key == Key.Escape)
{
e.Handled = true;
}
}
private void PopulateHistoryList(string text)
{
m_TextEntries.Add(text);
}
private event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
上記のコードは、テキストボックスでEnterキーが押されたときに、TextEntriesコレクションに入力されます。私は2つのものが必要です
- コンボボックスの選択項目を設定するにはどうすればよいですか。また、それをテキストボックスにバインドするにはどうすればよいですか。
- コンボボックス(ドロップメニュー)には、ドロップダウンメニューの最後の10エントリのみが表示されます。
前もって感謝します、