2012-08-01 37 views
5

Tôi là sinh viên và đang xây dựng một ứng dụng C# WPF. Nó có ba cửa sổ:Cách tiếp cận tốt nhất để hiển thị/ẩn cửa sổ một cách rõ ràng

  1. Đăng nhập cửa sổ

  2. Tạo cửa sổ tài khoản

  3. và cửa sổ ứng dụng chính.

Tôi đã tải lên một hình để hiển thị các loại hàng hải Tôi cố gắng để thực hiện:

http://picturepush.com/public/8870554

Tôi không nghĩ rằng nó là chính xác để thực hiện một cửa sổ xuất hiện/ẩn bên trong gần/tải sự kiện của cửa sổ khác.

  1. Ai đó có thể chỉ cho tôi cách phù hợp để thực hiện điều hướng này?

  2. Ngoài ra, thực tiễn tốt là làm cho ba cửa sổ thuộc tính riêng tư của lớp ứng dụng?

  3. Cửa sổ cuối cùng có điều khiển khung để hỗ trợ điều hướng trang. Một lần nữa, tốt hơn là làm cho ba trang thuộc tính riêng của ứng dụng MainWindow?

Tôi rất tiếc nếu điều này thật hiển nhiên hoặc dễ thực hiện. Cảm ơn

+0

Câu hỏi đặt ra không phải là thực sự xấu, nhưng khó khăn trên một nền tảng như stackoverflow, vì vậy tôi sợ bạn sẽ không nhận được một câu trả lời phù hợp tốt. Chỉ một số ý kiến ​​ít nhất: Tại sao cửa sổ phải là thuộc tính của lớp ứng dụng? Nếu chúng là các hộp thoại phương thức, chúng sẽ được tạo ra tại chỗ và trực tiếp sau khi bị phá hủy (ngoại trừ cửa sổ chính của khóa học). Không, đóng và tải là không phải là ý tưởng tốt nhất, bởi vì cửa sổ chủ sở hữu chưa được hiển thị. Chỉ cần tạo hộp thoại nơi bạn cần và đặt cửa sổ phương thức hiện tại làm chủ sở hữu. – dowhilefor

Trả lời

0

Tôi sẽ không có ba cửa sổ làm thuộc tính của ứng dụng. Tôi muốn instanciate một bản sao của cửa sổ đăng nhập và sử dụng nó như là điểm kiểm soát trung tâm của tôi.

Khi người dùng đăng nhập, ẩn cửa sổ đăng nhập, hiển thị cửa sổ chính mới và thêm móc vào cửa sổ chính Sự kiện đã đóng.

ví dụ

if (logonSuccess) 
{ 
    var mainWindow = new MainWindow(); 
    mainWindow.Closed += ReshowSignupWindow; 
} 

Tôi cũng có cửa sổ đăng nhập làm tương tự cho các cửa sổ tạo tài khoản. Vì vậy, tôi muốn có cửa sổ tạo tài khoản trở lại cửa sổ đăng ký sẽ tự động sửa lại hoặc khởi động cửa sổ chính nếu tài khoản được tạo.

ví dụ .:

// In sign-in window, handle the create window being closed 
private void CreateWindowClosedHandler(object sender, EventArgs e) 
{ 
    if (accountCreatedOK) 
    { 
     ShowMainWindow(); 
    } 
    else 
    { 
     ReshowSignupWindow(); 
    } 
} 

tôi có lẽ muốn nhìn vào có cửa sổ tài khoản tạo hiển thị như một cửa sổ hộp thoại thông qua một cuộc gọi đến ShowDialog().

Hy vọng rằng sẽ giúp ...

0

Something như mã này có thể làm điều đó (chưa được kiểm tra, tôi chỉ cần gõ chữ trong visual studio để AutoFormat mã) Các XAML là cho đăng nhập Dialog. RegistrationDialog phải giống nhau, ngoại trừ nút và trình xử lý cho Nút đăng ký.

<Window x:Class="WpfApplication1.LoginWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="LoginWindow"> 
    <StackPanel> 
     <Button IsDefault="True" Content="Submit" Click="SubmitButton_Click"/> 
     <Button IsCancel="True" Content="Cancel" /> 
     <Button Content="CreateAccount" Click="CreateAccountButton_Click"/> 
    </StackPanel> 
</Window> 

//Handler of LoginWindow and RegistrationWindow 
private void SubmitButton_Click(object sender, RoutedEventArgs e) 
{ 
    this.DialogResult = true; 
} 

//Handler of LoginWindow only 
private void CreateAccountButton_Click(object sender, RoutedEventArgs e) 
{ 
    this.IsCreatingAccount = true; 
    this.DialogResult = false; 
} 

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     bool isCanceled; 

     while (loginWin.ShowDialog() == false && !isCanceled) 
     { 
      if (loginWin.IsAccountCreationRequested) 
      { 
       if (registrationWin.ShowDialog()) 
       { 
        isCanceled = true; 
       } 
       else 
       { 
        loginWin.IsAccountCreationRequested = false; 
       } 
      } 
      else 
      { 
       isCanceled = true; 
      } 
     } 

     if (loginWin.DialogResult) MainWindow.Show(); 
    } 
} 
0

Tôi hiện đang làm việc trên Ứng dụng Silverlight ít nhiều giống với đơn đăng ký của bạn. Những gì tôi cảm thấy là bạn có thể có 2 điều khiển xaml (một cho đăng nhập và khác cho ứng dụng chính của bạn). Để tạo tài khoản, bạn có thể sử dụng cửa sổ con sẽ được gọi từ điều khiển đăng nhập. Và sử dụng một TabControl trong ứng dụng chính của bạn mà sẽ giữ các điều khiển 3 xaml khác của bạn (Page1.xaml, Page2.xaml và Page3.xaml). Vui lòng hỏi nếu bạn có bất kỳ vấn đề nào.

Đừng quên đánh dấu câu trả lời của tôi là câu trả lời nếu nó giải quyết được vấn đề của bạn.

0

Tôi khuyên bạn nên theo dõi mẫu. Logic của bạn trông có vẻ ràng buộc chặt chẽ với giao diện người dùng (giao diện người dùng) và logic.

Mẫu tốt nhất tôi thích là dành cho WPF hoặc Silverlight là MVVM (Kiểu xem mô hình chế độ xem). Có rất nhiều ví dụ có sẵn trong google cho MVVM.

Chỉ cần xem lướt qua bất kỳ ví dụ MVVM nào bạn sẽ rõ ràng trong việc phát triển ứng dụng WPF hoặc Silverlight.

một số liên kết dưới, http://msdn.microsoft.com/en-us/magazine/dd419663.aspx http://www.c-sharpcorner.com/UploadFile/raj1979/simple-mvvm-pattern-in-wpf/ http://www.codeproject.com/Articles/126249/MVVM-Pattern-in-WPF-A-Simple-Tutorial-for-Absolute

Các vấn đề liên quan