尝试在 Visual Studio 2008 中编辑 UI 时出现 WPF 设计器异常
Posted
技术标签:
【中文标题】尝试在 Visual Studio 2008 中编辑 UI 时出现 WPF 设计器异常【英文标题】:WPF Designer exception while trying to edit UI in Visual studio 2008 【发布时间】:2010-10-04 10:23:16 【问题描述】:我的机器上安装了带有 .net 3.5 SP1 的 VS2008,我编写了一个带有两个列表视图和数据绑定的简单应用程序,我的应用程序编译良好并且我能够运行它,但是当我尝试打开设计器来编辑控件时,我收到以下错误。 我不明白为什么会这样。任何想法...请参阅此错误消息下方的 xaml
程序集“PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”中的类型“MS.Internal.Permissions.UserInitiatedNavigationPermission”未标记为可序列化。 在 System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 类型) 在 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型类型,StreamingContext 上下文) 在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() 在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter) 在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter) 在 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo,NameInfo memberNameInfo,NameInfo typeNameInfo) 在 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(对象图,Header[] inHeaders,__BinaryWriter serWriter,布尔 fCheck) 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(流序列化流,对象图,标头 [] 标头,布尔 fCheck) 在 System.Runtime.Remoting.Channels.CrossAppDomainSerializer.SerializeObject(对象 obj,MemoryStream stm) 在 System.AppDomain.Serialize(对象 o) 在 System.AppDomain.MarshalObject(对象 o) 在 System.Threading.CompressedStack.GetDomainCompressedStack(SafeCompressedStackHandlecompressedStack,Int32 索引) 在 System.Security.PermissionListSet.CreateCompressedState(CompressedStack cs,CompressedStack innerCS) 在 System.Threading.CompressedStack.CompleteConstruction(CompressedStack innerCS) 在 System.Threading.CompressedStack.GetCompressedStack(StackCrawlMark 和 stackMark) 在 System.Security.SecurityContext.Capture(ExecutionContext currThreadEC,StackCrawlMark 和 stackMark) 在 System.Threading.ExecutionContext.Capture(StackCrawlMark 和 stackMark) 在 System.Threading.ExecutionContext.Capture() 在 System.Windows.Threading.Dispatcher.BeginInvokeImpl(DispatcherPriority 优先级,委托方法,对象参数,布尔 isSingleParameter) 在 System.Windows.Threading.Dispatcher.BeginInvoke(DispatcherPriority 优先级,委托方法,对象 arg) 在 System.Windows.Input.CommandManager.RaiseRequerySuggested() 在 System.Windows.Input.CommandManager.InvalidateRequerySuggested() 在 Microsoft.Windows.Design.Interaction.Tool.TaskCollection.InsertItem(Int32 索引,任务项) 在 System.Collections.ObjectModel.Collection`1.Add(T 项) 在 Microsoft.Windows.Design.Interaction.SelectionTool..ctor() 在 MS.Internal.Providers.VSActiveToolProvider.SelectionToolFactory.TryCreateTool[T](T& 工具) 在 MS.Internal.Host.ToolSubsystem.ActivateTool(ToolFactory toolFactory) 在 MS.Internal.Host.ToolSubsystem..ctor(EditingContext editingContext, DesignerContext DesignerContext) 在 MS.Internal.Host.Designer.Load() 在 MS.Internal.Designer.VSDesigner.Load() 在 MS.Internal.Designer.VSIsolatedDesigner.VSIsolatedView.Load() 在 MS.Internal.Designer.VSIsolatedDesigner.VSIsolatedDesignerFactory.Load(IsolatedView 视图) 在 MS.Internal.Host.Isolation.IsolatedDesigner.BootstrapProxy.LoadDesigner(IsolatedDesignerFactory 工厂,IsolatedView 视图) 在 MS.Internal.Host.Isolation.IsolatedDesigner.BootstrapProxy.LoadDesigner(IsolatedDesignerFactory 工厂,IsolatedView 视图) 在 MS.Internal.Host.Isolation.IsolatedDesigner.Load() 在 MS.Internal.Designer.DesignerPane.LoadDesignerView()
XAML:
<Grid Name="pngrid_Base" Height="auto" Width="auto" Background="Beige">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" MinWidth="221"></ColumnDefinition>
<ColumnDefinition Width="auto" MinWidth="1" MaxWidth="1"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Name="pngrid_BaseForAll" Grid.Column="0" Width="auto" HorizontalAlignment="Left" Background="#FFD8E4F8">
<Grid.RowDefinitions>
<RowDefinition Height="30*"/>
<RowDefinition Height="164*" />
<RowDefinition Height="35*" />
<RowDefinition Height="164*" />
<RowDefinition Height="40*" />
</Grid.RowDefinitions>
<ListView Name="lstview_Unack" Grid.Row="1" Margin="2,0,0,0" SelectionMode="Extended" LostFocus="lstview_Unack_LostFocus"
MouseRightButtonDown="lstview_Unack_MouseRightButtonDown">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="Binding Path=IsSelected, Mode=TwoWay" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
<Button Grid.Row="2" HorizontalAlignment="Left" Margin="24,14,0,5" Name="btnFreeze">Freeze</Button>
<Button Grid.Row="2" HorizontalAlignment="Left" Margin="12,7,0,5" Name="btnAcknowledge" Width="96">Acknowledge</Button>
<ListView Name = "lstview_Ack" Grid.Row="3" Margin="2,1,0,0" LostFocus="lstview_Ack_LostFocus" SelectionMode="Extended" MouseRightButtonDown="lstview_Ack_MouseRightButtonDown">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="Binding Path=IsSelected, Mode=TwoWay" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
<Button Grid.Row="4" HorizontalAlignment="Left" Margin="16,12,0,7" Name="Clear" Width="78">Clear</Button>
<TextBox Margin="110,6,32,5" Name="FilterText" TextChanged="FilterText_TextChanged" />
<ComboBox HorizontalAlignment="Left" Margin="14,5,0,4" Name="comboColumnList" Width="94" />
</Grid>
<GridSplitter Grid.Column="1" Name="gridSplitter1" Width="2" HorizontalContentAlignment="Center" VerticalContentAlignment="Stretch" HorizontalAlignment="Left" Background="Azure" />
<Grid Name="pnGridForTreeView" Grid.Column="2" Width="200" Grid.ColumnSpan="2">
<my:TrinityDeviceTree x:Name ="m_objDeviceTree" Height="auto" Width="auto">
</my:TrinityDeviceTree>
</Grid>
</Grid>
【问题讨论】:
出现这种错误的原因可能是什么......似乎这个错误很常见,但解决方案不是......已经看到很多有这个错误的帖子 【参考方案1】:我已经在 VS2008 中使用 .NET 3.5 SP1 测试了您的代码,如果我删除了 TrinityDeviceTree 的声明,它与设计器配合得很好。 也许你应该检查那个 UserControl 并在那里寻找错误。还要尝试清理您的项目并重新构建,有时它适用于视觉设计师的问题。
【讨论】:
以上是关于尝试在 Visual Studio 2008 中编辑 UI 时出现 WPF 设计器异常的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2012 未能检测到 Visual Studio 2008 构建工具
尝试在 Visual Studio 2008 中编辑 UI 时出现 WPF 设计器异常