我有一些 XAML
<ItemsControl Name="mItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Mode=OneWay}" KeyUp="TextBox_KeyUp"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
绑定到一个简单的 ObservableCollection
private ObservableCollection<string> mCollection = new ObservableCollection<string>();
public MainWindow()
{
InitializeComponent();
this.mCollection.Add("Test1");
this.mCollection.Add("Test2");
this.mItemsControl.ItemsSource = this.mCollection;
}
在最后一个文本框中按回车键后,我希望出现另一个文本框。我有代码可以做到这一点,但有一个差距:
private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key != Key.Enter)
{
return;
}
TextBox textbox = (TextBox)sender;
if (IsTextBoxTheLastOneInTheTemplate(textbox))
{
this.mCollection.Add("A new textbox appears!");
}
}
函数IsTextBoxTheLastOneInTheTemplate ()是我需要的东西,但不知道怎么写。我该怎么写呢?
我考虑过使用 ItemsControl.ItemContainerGenerator,但不能将所有部分放在一起。
谢谢!
-麦克风