0

重複の可能性:
MainWindow コンストラクターが 2 回呼び出される

以下のリンク に従って、 MVVMパターンに従ってWPFアプリケーションを開発しています。http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

サンプルからいくつかのファイルをコピーしました (つまり、viewmodel ベース、Relaycommang など)。アプリケーションは正常に動作していますが、起動時に Mainwindow.xaml の 2 つのインスタンスが表示されます。

解決するために多くのことを試みましたが、追跡できませんでした。

 public partial class App : Application
{
    static App()
    {
        // This code is used to test the app when using other cultures.
        //
        //System.Threading.Thread.CurrentThread.CurrentCulture =
        //    System.Threading.Thread.CurrentThread.CurrentUICulture =
        //        new System.Globalization.CultureInfo("it-IT");


        // Ensure the current culture passed into bindings is the OS culture.
        // By default, WPF uses en-US as the culture, regardless of the system settings.
        //
        FrameworkElement.LanguageProperty.OverrideMetadata(
          typeof(FrameworkElement),
          new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
    }

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        MainWindow window = new MainWindow();

        // Create the ViewModel to which 
        // the main window binds.
        string path = "Data/customers.xml";
        var viewModel = new MainWindowViewModel(path);

        // When the ViewModel asks to be closed, 
        // close the window.
        EventHandler handler = null;
        handler = delegate
        {
            viewModel.RequestClose -= handler;
            window.Close();
        };
        viewModel.RequestClose += handler;

        // Allow all controls in the window to 
        // bind to the ViewModel by setting the 
        // DataContext, which propagates down 
        // the element tree.
        window.DataContext = viewModel;

        window.Show();
    }

}
4

1 に答える 1

0

App.xaml ファイルを確認してください。ビューは、コード内だけでなく、そこでインスタンス化することもできます。それ以外の場合は、詳細な情報がないと、問題が何であるかを判断するのが困難です。

于 2012-09-04T12:20:32.443 に答える