由于 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](RemoteHandle
1 targetObject, Func`2 func)