2013-08-31 62 views
2

我有一個名爲usermanagement的wpf窗口,並且有一個顯示所有用戶的列表框,我在用戶管理窗口中有一個名爲add user的按鈕,當我點擊該窗口時會打開adduser,在這個窗口中有添加新用戶的輸入字段,當我保存數據時這個adduser窗口關閉,然後用戶管理窗口更新列表框,意味着用戶再次更新(新添加的用戶應該在添加後顯示那裏)。此刻我需要再次打開用戶管理窗口以查看新添加的用戶。謝謝!在另一個窗口上執行某些操作後更新wpf父窗口

這裏是XAML文件下面

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using System.Collections; 
using Model; 

namespace Views 
{ 
    /// <summary> 
    /// Interaction logic for frmUserManagement.xaml 
    /// </summary> 

    public partial class frmUserManagement : Window 
    { 
     public frmUserManagement() 
     { 
      InitializeComponent(); 
     } 
     public void window_loaded(object sender, RoutedEventArgs e) 
     { 
      load_users(); 
     } 
     public void load_users() 
     { 
      RST_DBDataContext conn = new RST_DBDataContext(); 
      var users = (from s in conn.TblUsers 
         select s.UserName).ToList(); 
      Login_Names.ItemsSource = users; 
     } 
     private void add_user(object sender, RoutedEventArgs e) 
     { 
      adduser AddUserWindow = new adduser(); 
      AddUserWindow.ShowDialog(); 
     } 


    } 
} 

代碼有

<Grid> 
     <ListBox Name="Login_Names" HorizontalAlignment="Left" Height="337" Margin="10,47,0,0" Padding="0,0,0,0" VerticalAlignment="Top" Width="156"> 
<Button Content="Add" HorizontalAlignment="Left" Margin="10,404,0,0" VerticalAlignment="Top" Width="75" Click="add_user"/> 
</Grid> 
+0

你應該張貼您的代碼。 您使用的是ObservableCollection ? –

+0

hi @eranotzap我編輯了代碼 –

回答

1

執行主窗口中插入操作(UserManagmentWindow):

UserManagmentWindow.cs:

// Inside add button handler open adduser window as dialog box... 
var result = adduser.ShowDialog(); 
if(result == true){ 
    // user pressed OK button... 
    // insert new user in database 
    // refresh UserManagmentWindow 
} 

如果您需要更多詳細信息,請發佈您的代碼...

+0

hi @jalal問題hi @jalal我添加了代碼,謝謝 –

+0

我已經完成了你的代碼,但只做了很少的修改,我在adduser窗口中聲明瞭另一個變量,保存數據後我返回true,然後我使用,如果在usermanagement條件,併爲我工作,謝謝! –

0

您可以在您的AddUser窗口中聲明一個事件,並在按下按鈕時觸發事件。

首先定義你的EventArgs子類

public class AddUserEventArgs : EventArgs 
{ 
    public User AddInfo { get; private set; } 

    public AddUserEventArgs(User info) 
    { 
     this.AddInfo = info; 
    } 
} 

在你ADDUSER類:

public event EventHandler<AddUserEventArgs> AddedUser; 

private void Button_Click(Object sender, RoutedEventArgs) 
{ 
    User info = new User(); 
    // Realize your validation here... 

    // If validation is Okay, then.. 
    if (OK) 
    { 
     if (this.AddedUser != null) 
      this.AddedUser(this, new AddUserEventArgs(info)); 
     this.Close(); 
    } 
} 

在你UserManagement類:

var window = new AddUserWindow(); 
window.AddedUser += (sender, e) => 
{ 
    // Add the info to your ObservableCollection. 
    this.collection.Add(e.AddInfo); 
} 
window.ShowDialog(); 
相關問題