2012-08-01 17 views
5

私は学生で、C#WPFアプリケーションを構築しています。ウィンドウウィンドウを表示/非表示にする最善の方法

    1. ログインアカウントの作成ウィンドウ

    2. とメインアプリケーションウィンドウ:それは3つのウィンドウがあります。

    私は私が実装しようとしているナビゲーションの種類を表示するフィギュアをアップロード:

    http://picturepush.com/public/8870554

    私はウィンドウが近い内/非表示を表示するために正しいとは思いません/別のウィンドウのイベントをロードする。

    1. このナビゲーションを実装する正しい方法を教えてもらえますか?

    2. また、3つのウィンドウをアプリケーションクラスのプライベートプロパティにするのがよい方法ですか?

    3. 最後のウィンドウには、ページナビゲーションをサポートするフレームコントロールがあります。繰り返しますが、MainWindowアプリケーションの3つのページをプライベートプロパティにする方が良いでしょうか?

    これはあまり明らかでないか簡単です。 ありがとう

  • +0

    質問はstackoverflowのようなプラットフォーム上で本当に悪いが、難しいことではありませんので、私はあなたが良いフィッティング答えを得ることはありません怖いです。ちょっとしたアイディア:少なくとも、ウィンドウはアプリケーションクラスのプロパティでなければならないのですか?それらがモーダルダイアログである場合、それらはインプレースで作成され、その直後に破棄されるべきです(もちろん、メインウィンドウを除く)。所有者ウィンドウがまだ表示されていないので、No、CloseおよびLoadは適切な考えではありません。必要な場所にダイアログを作成し、現在のモーダルウィンドウをオーナーとして設定します。 – dowhilefor

    答えて

    0

    アプリケーションのプロパティとして3つのウィンドウがありません。私はサインインウィンドウのコピーを作成し、それを私の中心的なコントロールポイントとして使用します。

    ユーザーがログインすると、サインインウィンドウが非表示になり、新しいメインウィンドウが表示され、メインウィンドウのクローズイベントにフックが追加されます。

    例えば

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

    私もサインインウィンドウを持っていると思います、アカウントを作成し、ウィンドウのための同じことを行います。したがって、アカウント作成ウィンドウをサインアップウィンドウに戻して、アカウントが作成された場合はメインウィンドウを起動するか、またはサインアップウィンドウに戻します。

    例えば:

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

    私はおそらくShowDialog()への呼び出しを経由して、ダイアログウィンドウとして示さ作成アカウント窓を有するで見てね。

    役立ちます...このコードのよう

    0

    何かがそれを行う可能性があります希望(未テスト、私はコードをオートフォーマットするためにVisual Studioでそれを入力) XAMLは、ログインダイアログのためです。 RegistrationDialogは、登録ボタンのボタンとハンドラを除いて、似ているはずです。

    <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

    私は現在、あなたのアプリケーションに多かれ少なかれ類似しているSilverlightアプリケーションで作業しています。私はあなたの2つのxamlコントロール(1つはログイン用、その他はメインアプリケーション用)を持つことができると感じています。アカウントの作成では、ログイン制御から呼び出される子ウィンドウを使用できます。また、他の3つのxamlコントロール(Page1.xaml、Page2.xaml、Page3.xaml)を保持するメインアプリケーションでTabControlを使用します。問題がある場合はお気軽にお問い合わせください。

    あなたの問題を解決する場合は、返信として返信するのを忘れないでください。

    0

    パターンに従うことをお勧めします。あなたのロジックは、UI(ユーザーインターフェイス)とロジックと密接に結びついているように見えます。

    私が気に入ったベストパターンは、WPFまたはSilverlightはMVVM(Model View View Model)です。 MVVMのgoogleで利用できる例がたくさんあります。

    MVVMの例を一目で確認すると、WPFまたはSilverlightアプリケーションを開発する際に明確になります。いくつかのリンクは以下の通りです

    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

    関連する問題