0

我正在创建一个显示所有员工的 GridView,我可以选择其中一名员工并单击编辑按钮直接进入编辑页面,所选员工的所有属性都绑定到TextBox or ComboBox。更改属性后,单击保存按钮回到GridView页面。但是,GridView 中的员工信息没有改变。我的 Employee 类已经实现INotifyPorpertyChanged了接口,GridView 的 ItemsSource 是ObservableCollection.

编辑页面中控件的绑定方式为双向绑定。

在我的 MainPage 构造函数中,代码如下:

public MainPage()
    {
        this.InitializeComponent();
        MyGridView.ItemsSource = Employees;  
    }

这是编辑按钮单击事件处理程序:

private void Button_Click(object sender, RoutedEventArgs e)
    {
        emp= MyGridView.SelectedItem as Employee;
        if (emp!= null)
        {
            Frame.Navigate(typeof(EditPage), emp);
        }
    }

这是保存按钮单击事件处理程序:

private void Button_Click(object sender, RoutedEventArgs e)
    {            
        Frame.Navigate(typeof(MainPage));
    }

任何人都可以帮忙吗?

4

3 回答 3

0

您是否检查过更改的信息是否到达相应的属性?

如果是这样:触发事件?是否附加了事件处理程序?

克里斯托夫

于 2013-05-02T06:13:42.133 回答
0

看来您有Page.IsPostback的问题,在 Page_Load 事件上使用Page.IsPostback的 Page 属性就像

protected void Page_Load(object sender, EventArgs e)
    {
      if (!Page.IsPostBack)
      {
       // Put your code here..
      }
    }

您的值已更改,但是当您的页面再次加载时,它会变为旧值,因为我认为您的 Page_Load 中没有Page.IsPostback。使用页面的 ISPostback 属性,您的问题将得到解决。有关更多知识,请查看MSDN 文档

希望它有效。

于 2013-05-02T06:19:56.210 回答
0

需要注意的两件事: - 确保在编辑页面上保存时,信息存储在精确存储中(db 等) - 当您导航回 MainPage 时,您正在填充您的视图模型,并加载您保存的最新信息。

但是,在窗口 8 中,当您在公共文件夹中构建了 BindableBase.cs 类时,为什么要选择 INotifyPorpertyChanged。

于 2013-05-02T06:22:39.370 回答