我还在学习WPF并且已经找到了一种方法来做到这一点,这并不是我的学习水平,但还没有找到答案。希望有人可以帮助我!
我的申请目的是成为一个简单的入住/退房计划。在我的主应用程序中,我按名称列出了员工以及2个按钮(输入和输出)以及注释字段。
到目前为止,我已经设法打开一个新的窗口,当' In'或者' Out'单击按钮并提示用户发表评论。我设法将该评论传回我的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'是我想要进入那一行。如果我知道行号和列号,是不是有一种简单的方法可以将字符串插入到网格中?
答案 0 :(得分:0)
这是一个小例子,你可以做到这一点。除此之外,我还建议学习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; }
}