在GridView中插入一个字符串
我还在学习WPF,并且寻找了一种方法来做到这一点,这并不超出我的学习水平,但还没有找到答案。希望有人能帮助我!在GridView中插入一个字符串
我的申请的目的是做一个简单的入住/退房计划。在我的主要应用程序中,我按名称列出员工以及2个按钮(进出)以及注释字段。
到目前为止,我设法打开一个新窗口,当点击'进'或'出'按钮并提示用户发表评论时。我已经设法将该评论传回给我的MainWindow,但现在我不知道如何在GridView中显示该评论。
这里是MainWindow.cs的样子:
private void menuIn_Click(object sender, RoutedEventArgs e)
{
var item = (sender as FrameworkElement).DataContext;
int rowNumber = lvUsers.Items.IndexOf(item) + 1;
// MessageBox.Show(String.Format("Button row is {0}", rowNumber));
string userCommentString = "";
SubWindow subWindow = new SubWindow(userCommentString, rowNumber);
subWindow.Show();
}
所以“ROWNUMBER”是一个包含注释字段我想换行。 'userCommentString'是我想要进入该行的内容。如果我知道行号和列号,是否没有简单的方法将字符串插入网格?
这是一个小例子,你可以做到这一点。除此之外,我还建议学习MVVM。
XAML:
<ListView x:Name="lvUsers">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Path=Name}" />
<GridViewColumn Header="Comment" Width="150" DisplayMemberBinding="{Binding Path=Comment}" />
<GridViewColumn Header="Button">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Margin="6,2,6,2">
<Button Content="Click" Click="Button_Click" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
项目添加到ListView的
lvUsers.Items.Add(new Test() { Name = "User A" });
lvUsers.Items.Add(new Test() { Name = "User B" });
lvUsers.Items.Add(new Test() { Name = "User C" });
操纵按钮单击行:
private void Button_Click(object sender, RoutedEventArgs e)
{
//Get row number
var item = (sender as FrameworkElement).DataContext;
int rowNumber = lvUsers.Items.IndexOf(item);
//Use row number to manipulated the right row
//This should be done after comment is passed back to MainWindow
Test t = (Test)lvUsers.Items[rowNumber];
t.Comment = "new comment";
lvUsers.Items.Refresh();
}
测试类:
public class Test
{
public string Name { get; set; }
public string Comment { get; set; }
}
这段文字出现错误: Test t =(Test)lvUsers.Items [rowNumber]; System.NullReferenceException:'未将对象引用设置为对象的实例。' lvUsers为null。 这是告诉我什么? –
您是否使用过'Test'类将项目添加到lvUsers? – Ben
编辑:太长的评论,也许需要一个新的问题。 –
嗨乔希!我会建议你使用MVVM。任何对您的代码进行小修改的答案都不会对您的WPF职业生涯有所帮助,因为您在这里使用传统的命令式编程技术。如果您使用的是MVVM,则只需将您的新项目插入到ObservableCollection中,然后将数据绑定到它所显示的控件。 – hoodaticus
我没有计划开始WPF职业生涯,因为我只负责创建此结算程序,因为我们旧的功能已经失效,我在大学里开了一些编程课。当时的想法是,当我不忙时,这将是一个“简单的项目”。不过,如果你能指点我一个很好的教程,我很乐意学习MVVM。 –
正确地遵循MVVM需要相当的纪律,并且需要大量的学习投资。如果你不认为这是你的职业生涯的方向,那么你可能会考虑通过WPF的WinForms。 “模式背后的代码”比WinForm更容易和更宽容,而不是WPF。 –