Kla*_*lay 5 wpf custom-controls
这是我第一次涉足自定义控件,而且进展不顺利.我有一个从Canvas派生的自定义图形控件.
namespace Grapher2 {
public class SeriesManager : Canvas {
public SeriesManager() {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
它与我的应用程序在同一个项目和命名空间中定义.我尝试在XAML中添加对控件的引用,如下所示:
<Window x:Class="Grapher2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:graph="clr-namespace:Grapher2"
Title="Grapher" Width="800" Height="600">
<StackPanel Name="container" Width="700" Height="500">
<graph:SeriesManager Name="seriesManager" Width="700" Height="500" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在Window的代码隐藏中引用控件名称"seriesManager"时,我得到"当前上下文中不存在名称'seriesManager'."
此外,XAML编辑器不会渲染窗口,给出了一个巨大的堆栈跟踪错误:"在Assembly'FresentationFramework中输入'MS.Internal.Permissions.UserInitiatedNavigationPermission',Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'没有标记为可序列化."
我认为对于那些完成自定义控件的人来说,解决方案是非常简单的.但我很难过.
Sco*_*ott 11
你在你的xaml中尝试过x:Name ="seriesManager"吗?
编辑:这可能不是看你说你的xaml没有渲染的问题.我猜你一旦你在设计师中得到xaml渲染......背后的代码会更好.
编辑2:每当我遇到设计器渲染问题时,都是因为我在自定义控件的构造函数中做了一些事情.检查您的SeriesManager以查看您是否在其构造函数中执行了导致问题的操作.也许你正在引用一些尚不存在的东西.如果构造函数中有额外的代码,请考虑将其移动到UserControl_Loaded事件.