0

由于 xaml 窗口停止使用 VS 2012 显示我的 wpf 表单(在我在主 .cs 表单的顶部添加了一些注释之后),我恢复到 C# Express 2010。

我复制了我的 xaml 和代码并将它们粘贴到新项目中。

但是,我收到错误消息,例如:

*'duckbilledPlatypusInfoMailer_Express.MainWindow'不包含'MainWindow_Loaded'的定义,并且没有扩展方法'MainWindow_Loaded'接受'duckbilledPlatypusInfoMailer_Express.MainWindow'类型的第一个参数(您是否缺少 using 指令或程序集引用?)*

和:

当前上下文中不存在名称“InitializeComponent”

关于两个控件,我的标签和按钮(但不是 DatePicker!),我得到了相同的错误消息

因此,就 VC#2010 而言,我的两个事件处理程序、三个控件中的两个以及“InitializeComponent”都被渲染为隐形斗篷......???

这是我的 xaml 和代码(最小,所以 p[a,o]sting 全部):

XAML:

<Window x:Class="duckbilledPlatypusInfoMailer_Express.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Duckbilled Platypus Info Mailer"  SizeToContent="WidthAndHeight" WindowStartupLocation="CenterScreen" MinHeight="350" MinWidth="525" Loaded="MainWindow_Loaded" >
    <StackPanel>
        <StackPanel Orientation="Horizontal">
            <Button x:Name="btnSelectPDFFile" HorizontalAlignment="Left" Padding="4" Margin="4" Width="120" Click="btnSelectPDFFile_Click" IsDefault="True">Select PDF File
            </Button>
            <Label x:Name="lblPlatypusSheetFile" Margin="4" >[Selected File]</Label>
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <DatePicker ></DatePicker>
        </StackPanel>
    </StackPanel>
</Window>

代码:

using System;
using System.Windows;
using duckbilledPlatypusInfoMailer;

namespace PlatypusInfo_Express
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            btnSelectPDFFile.Focus();
        }

        private void btnSelectPDFFile_Click(object sender, RoutedEventArgs e)
        {
                        var dlg = new Microsoft.Win32.OpenFileDialog
                          {
                              InitialDirectory = @"C:\Scrooge\McDuckbilledPlatypus\",
                              DefaultExt = ".pdf",
                              Filter = "Platypus Data Sheets (sa*.pdf)|sa*.pdf"
                          };

            bool? result = dlg.ShowDialog();

            if (result == true)
            {
                string pdfFilename = dlg.FileName;
                // Show just the file name, without the path
                string pdfFileNameOnly = System.IO.Path.GetFileName(pdfFilename);
                lblReviewSheetFile.Content = pdfFileNameOnly;
                string textFilename = String.Format(@"C:\Scrooge\McDuckbilledPlatypus\{0}.txt", pdfFileNameOnly);
                var pdfParser = new PDFParser();
                if (pdfParser.ExtractText(pdfFilename, textFilename))
                {
                    System.Diagnostics.Process.Start(textFilename);
                }
                else
                {
                    MessageBox.Show("There was a boo-boo, Yogi!");
                }
            }
        }
    }
}

顺便说一句,我确实在我的解决方案(PDFParser.cs)中添加了必要的第 3 方文件以及两个必要的参考。

注意:如果我右键单击 xaml 中的事件处理程序,它确实会将我带到 cs 文件中的那些事件处理程序。所以它知道它们在哪里,为什么说它们不存在或找不到它们?

更新

这是我在 WPF 设计器中看到的错误的第一部分:

System.NotSupportedException 尝试从网络位置加载程序集,这会导致程序集在以前版本的 .NET Framework 中被沙盒化。此版本的 .NET Framework 默认情况下不启用 CAS 策略,因此这种加载可能很危险。如果此加载不打算对程序集进行沙箱处理,请启用 loadFromRemoteSources 开关。请参阅http://go.microsoft.com/fwlink/?LinkId=155569了解更多信息。在 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.WaitForCompletion(NestedCallContext nestedCallContext,BlockingCall 调用,WaitHandle timeoutSignal) 在 Microsoft.Expression.DesignHost.Isolation.Remoting.STAMarshaler.MarshalOut(Action 操作,Int32 targetApartmentId,WaitHandle 中止,WaitHandle timeoutSignal ) 在 Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TValue](RemoteHandle 1 targetObject, Action action) at Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TResult,TValue](RemoteHandle1 targetObject, Func`2 func)

4

1 回答 1

2

duckbilledXAML 的命名空间中有一个额外的内容:

<Window x:Class="duckbilledPlatypusInfoMailer_Express.MainWindow"

它必须与类后面的代码位于相同的命名空间中。

于 2012-07-08T21:07:36.413 回答