【发布时间】:2016-06-07 02:39:45
【问题描述】:
我找了又找,但找不到答案。
C# 和 WPF,我有一个包含 5 列的 ListView,每列都有一个 TextBox。
我的自定义类
public class SomeThing
{
public String field1 { get; set; }
public String field2 { get; set; }
public String field3 { get; set; }
public String field4 { get; set; }
public String field5 { get; set; }
}
我的添加代码
SomeThing item = new SomeThing();
lstItems.Items.Add(item);
我的按键密码
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Return || e.Key == Key.Tab)
{
TextBox tb = (TextBox)sender;
Grid grid = (Grid)tb.Parent;
if (tb.Tag.Equals("Price"))
{
if(lstItems.Items.Count <= lstItems.SelectedIndex + 1) {
SomeThing item = new SomeThing();
lstItems.Items.Add(item);
}
lstItems.SelectedIndex = lstItems.SelectedIndex + 1;
ListViewItem selectedItem = (ListViewItem)lstItems.ItemContainerGenerator.ContainerFromItem(this.lstItems.SelectedItem);
e.Handled = true;
}
}
}
但是
ListViewItem selectedItem = (ListViewItem)lstItems.ItemContainerGenerator.ContainerFromItem(this.lstItems.SelectedItem);
始终为空,
this.lstItems.SelectedItem
只是实例“SomeThing”的一个对象。
如何获取 ListView 容器?
如何将 TextBox 聚焦在新选定的行上?
请帮忙
【问题讨论】:
-
您是否尝试将其投射到您的自定义类中?
(Something)this.lstItems.SelectedItem -
@jpaugh78 这是我在调试时进行检查的时候。我无法将其转换为 ListViewItem,因为它的类型为 SomeThing
-
好吧,我没有意识到 ListView 的工作方式与我通常使用的控件有一点不同。我发现了一个可能对你有帮助的线程:stackoverflow.com/questions/17857367/…
标签: c# wpf listview listviewitem